在反推内部传递变量

时间:2017-08-09 15:21:28

标签: bash jq

以下是我遇到问题的一些代码

id=`my_api myrouter myroutername getsomething'{"uid":"$servername","meta_type":"system"}'| $SCRIPTS_DIR/jq -M '.result.data[].uid'`

for i in `echo $id`;
do

    echo $i
    echo ""
done

我无法在反引号中传递变量$ servername。对服务器名称进行硬编码绝对没有问题

我正在使用bash脚本。尝试逃避但它不起作用。我知道我错过了一些非常微不足道的东西,但它并没有传达给我。

1 个答案:

答案 0 :(得分:0)

反引号不是问题 - 因为变量出现在单引号内。这样做:

id=$(my_api myrouter myroutername getsomething'{"uid":"'"$servername"'","meta_type":"system"}'| $SCRIPTS_DIR/jq -M '.result.data[].uid')
# ............................................a........b^^^^^^^^^^^^^c.......................d

因此,单引号字符串从“a”开始,以“b”结尾,变量在双引号内被替换以扩展字符串,然后单引号字符串的其余部分从“c”变为“d” “