我有以下bash脚本,我想在回显中打印now
,我收到一个错误,但无法成功。您能指出我正确的方向吗?
$now = date -u +"%Y-%m-%dT%H:%M:%SZ"
echo '
{
"a": {
"timestamp": $now,
},
}
'
答案 0 :(得分:2)
首先,创建变量now
的语法错误,应该是:
now=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
然后,应该使用支持echo
的{{1}},而不是使用cat
:
here-doc
这样,您不必担心处理引号和在双引号内转义双引号。 Remember that your single quotes in echo
don't expand shell variables.
答案 1 :(得分:0)
您需要使用"
双引号来扩展shell变量。
考虑:
$ i=22
$ echo "i=$i"
i=22
$ echo 'i=$i'
i=$i
由于插值字符串中要使用文字双引号,因此需要反斜杠将其转义:
now=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
echo "{
\"a\": {
\"timestamp\": $now,
},
}"
打印:
{
"a": {
"timestamp": 2019-10-22T15:52:41Z,
},
}