我有这个简单的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
但我一无所获。
出了什么问题?
答案 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}}