2014-05-25 43 views
1

我得到這個簡單的bash腳本:BASH變量和awk內部變量

#! /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 

,但我什麼也沒得到。

怎麼了?

回答

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 
3

您需要調用一個命令並將輸出放入變量中。由於輸出有空格,所以應該引用它。

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

此外,爲什麼不只是調整日期輸出爲你想要的格式?

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也可以通過包含日期的字符串,並重新給你。

+0

+1爲正確的方法。 –