使用ssh在远程服务器上运行本地脚本而不必担心引号

前端之家收集整理的这篇文章主要介绍了使用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.请注意命令替换周围的引号.

顺便说一下,你发布的第一个命令不起作用.单引号可防止反引号在本地进行评估.

猜你在找的Bash相关文章