2017-05-08 72 views
1

我'試圖輸出內嵌狀態與日期的毗連字符串和eval

now="date -Iseconds" 
echo "[" eval $now echo "] my log status" 

這個返送管線

now="date -Iseconds" 
echo "["; eval $now; echo "] my log status" 

我不whant做

now=`date -Iseconds` 

因爲實時時鐘在2個日誌狀態之間並存儲變量初始化的時間

+1

如果您不知道自己在做什麼,請不要使用eval。您可以使用子shell'echo「[$($ now)]我的日誌狀態」'。但是你也不應該把命令保存到變量中,所以你可以使用一個數組來代替'now =(date -Iseconds)'並使用'$ {now [@]}'來訪問。 – 123

+1

*參數*可以保存在一個數組中; *命令*應該包裝在一個函數中。 – chepner

+0

@chepner怎麼回事? – 123

回答

0

使用功能:

now() { date -Iseconds; } 

echo "[$(now)] my log status" 

更妙的是,你可以使用一個函數,將輸出你的消息,除了前面日期:

msg_now() { printf '[%s] %s\n' "$(date -Iseconds)" "$*"; } 

和使用:

msg_now "my log status" 
+0

mutch thx,乾淨的編碼 – jelineau

0

你可以用只是回聲做到這一切

echo $(date -Iseconds) my log status; 

# 2017-08-16T01:18:25+00:00 my log status