如何在bash中的echo中打印变量的结果?

时间:2019-10-22 15:39:00

标签: bash

我有以下bash脚本,我想在回显中打印now,我收到一个错误,但无法成功。您能指出我正确的方向吗?

    $now = date -u +"%Y-%m-%dT%H:%M:%SZ"
    echo '
    {
        "a": {
            "timestamp": $now,
        },
    }
    '

2 个答案:

答案 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,
    },
}