2017-05-08 71 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