全部, 在将文件写入远程节点时,我无法转义单引号。
ssh -i demo.pem -t ec2-user@10.10.10.10 'echo '\''{"watches": [{"type": "key","key": "test","handler": "neon -e 'sudo /opt/watch_handler.sh'"}]}'\''| sudo tee /etc/key.json'
我得到的输出如下。
{"watches": [{"type": "key","key": "test","handler": "neon -e sudo /opt/watch_handler.sh"}]}
我希望输出在'sudo /opt/watch_handler.sh'周围有单引号
{"watches": [{"type": "key","key": "test","handler": "neon -e 'sudo /opt/watch_handler.sh'"}]}
'\'无效。
你能帮忙吗?谢谢,
答案 0 :(得分:0)
使多个引用级别正确是麻烦且容易出错的。考虑替代解决方案,例如:
cat <<EOF | ssh -i demo.pem -t ec2-user@10.10.10.10 sudo tee /etc/key.json
{"watches": [{"type": "key","key": "test","handler": "neon -e 'sudo /opt/watch_handler.sh'"}]}
EOF
我喜欢使用cat
因为它不需要任何转义才能工作。但是,只要您在JSON表达式中转义双引号,您也可以使用echo
而不是cat
在本地生成字符串:
echo "{\"watches\": [{\"type\": \"key\",\"key\": \"test\",\"handler\": \"neon -e 'sudo /opt/watch_handler.sh'\"}]}" | sudo tee /etc/key.json