BASH变量和awk里面的变量

时间:2014-05-25 14:02:09

标签: bash awk

我有这个简单的bash脚本:

#! /bin/bash

DATE=$(date +"%d%m%Y%H%M")

DATETIME=$DATE | awk '{print substr($1,1,2)"."substr($1,3,2)"."substr($1,5,4)", "substr($1,9,2)":"substr($1,11,2)}'

echo $DATETIME

变量DATE的输出例如是

250520141600

并且变量DATETIME的输出应为:

25.05.2014, 16:00

但我一无所获。

出了什么问题?

3 个答案:

答案 0 :(得分:4)

无需使用awk格式化输出。就这样做:

$ DATETIME=$(date +"%d.%m.%Y, %H:%M")
$ echo "$DATETIME"
25.05.2014, 15:21

也就是说,您可能希望存储一个日期并以多种不同方式显示它。为此,我建议使用date,而不是awk

$ DATE=$(date)
$ echo "$DATE"       
Sun May 25 15:39:09 BST 2014
$ date -d "$DATE" +"%d%m%Y%H%M"
250520141539
$ date -d "$DATE" +"%d.%m.%Y, %H:%M"
25.05.2014, 15:39

以及显示当前日期/时间,date也可以传递包含日期的字符串并为您重新格式化。

答案 1 :(得分:3)

您需要调用命令并将输出放在变量中。由于输出有空格,因此应该引用它。

DATETIME="$(echo $DATE | awk ...)"

另外,为什么不将日期输出调整为您想要的格式?

答案 2 :(得分:2)

它无法正常工作,因为在将echo汇总到DATE之前,您没有awk >> DATE=$(date +"%d%m%Y%H%M") >> DATETIME=$(echo $DATE | awk '{print substr($1,1,2)"."substr($1,3,2)"."substr($1,5,4)", "substr($1,9,2)":"substr($1,11,2)}') >> echo $DATETIME 25.05.2014, 16:07 的内容。

{{1}}