前端之家收集整理的这篇文章主要介绍了
使用ssh在远程服务器上运行本地脚本而不必担心引号,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我一直在远程服务器上运行本地脚本:
ssh user@server "`cat local-script.sh`"
但是,今天我有一个脚本,其中包含单引号和双引号.这导致脚本失败,因为cat local-script.sh的输出包含在引号中.如果不修改脚本本身,有没有更好的方法来处理它?
我认为这可行:
ssh user@server $(<local-script.sh)
但似乎没有做任何事情……
使用以下测试脚本:
#!/bin/bash
uname -n
a=(b c 'd e' f)
echo "${#a[@]}"
b=(1 "2 3" 4)
echo "${#b[@]}"
当使用以下命令执行时,输出应为远程主机名,后跟4和3;
ssh user@server "$(<scriptname)"
这表明脚本中的引号正在被正确处理.如果没有正确处理引号,由于分词,数字输出将为5和4.请注意命令替换周围的引号.
顺便说一下,你发布的第一个命令不起作用.单引号可防止反引号在本地进行评估.