通过SSH发送jq

问题描述 投票:0回答:1

当我在本地运行jq命令时,它起作用:

jq --arg ip "$IP" '.nodes|.app|.ip = $ip' nodes.json

输出:

{“节点”:1,“ is_manager”:是的,“ ip”:“ 127.0.0.1”,“ cpus”:16“内存”:64}

但是我不知道如何通过ssh远程发送它,例如,此命令返回错误:

 ssh -o StrictHostKeyChecking=no -i key.pem user@"172.13.1.23" "jq --arg ip "127.0.0.1" '.nodes|.app|.ip = $ip' nodes.json"

输出:

jq:错误:语法错误,第1行的意外$ end(Unix shell引用问题?).nodes | .app | .ip =jq:1编译错误

json bash ssh syntax jq
1个回答
1
投票

$ip用双引号引起来,因此在本地扩展。您需要转义美元符号。

ssh -o StrictHostKeyChecking=no -i key.pem user@"172.13.1.23" \
  "jq --arg ip "127.0.0.1" '.nodes|.app|.ip = \$ip' nodes.json"
© www.soinside.com 2019 - 2024. All rights reserved.