在bash中将多行参数传递给ssh?

时间:2013-08-23 00:21:20

标签: bash shell ssh

我想将以下参数传递给bash脚本:

ssh -t $slaveAddr "chmod a+rwx newSlaveInstallation.sh; 
echo 'running the installation script....';
./newSlaveInstallation.sh $USERNAME $NEW_REPLICATION_VAL "$slaveList"; 
exit"

用户名是“user”之类的用户名,新复制val是一个数字,slavelist是新行分隔的IP地址列表,如“1.2.3.4 derp \ n 1.2.3.5 derpp”但是,一旦我通过将这三个参数转换为ssh,对于slaveList,它只考虑IP地址而不考虑整个新行分隔值的字符串。换句话说,如果在脚本中,我回显slaveList,它给我“1.2.3.4”是否有任何特殊格式传递字符串的整个值?谢谢!

1 个答案:

答案 0 :(得分:4)

你需要在第一个和最后一个内部转义双引号。否则命令将被截断。

ssh -t "$slaveAddr" "chmod a+rwx newSlaveInstallation.sh; 
echo 'running the installation script....';
./newSlaveInstallation.sh $USERNAME $NEW_REPLICATION_VAL \"$slaveList\"; 
exit"