在Linux脚本中的内联echo命令中访问主机变量

时间:2017-07-28 14:32:16

标签: linux shell

全部, 我在EC2实例上运行shell脚本。我正在尝试使用实例的IP定义服务。

    MY_IP=$(curl http://169.254.169.254/latest/meta-data/local-ipv4)

    echo '{"service": {"name": "demo", "tags": ["demo"], "port":80, "check":{"script":"curl $MY_IP:80 >/dev/null 2>&1","interval":"10s"}}}' | sudo tee /etc/demo.json

当我在实例上浏览我的demo.json文件时,MY_IP变量没有被替换。

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

使用单引号引用echo的参数。这些将阻止评估像$MY_IP这样的shell变量,因此它会逐字逐句地显示在那里(如$MY_IP)。

您必须关闭单引号,插入"$MY_IP",然后再次打开单引号:

echo '{"service": {"name": "demo", "tags": ["demo"], "port":80, "check":{"script":"curl '"$MY_IP"':80 >/dev/null 2>&1","interval":"10s"}}}' | sudo tee /etc/demo.json