将脚本传递给ssh时出现奇怪的bash错误

时间:2014-09-15 22:45:11

标签: bash ssh

我正在尝试远程运行本地脚本,而我正在调用其他一些代码。基本甲酸是

ssh -i ${PemKey} ${User}@${URL} 'bash -s' -- < ${Command}

我收到错误行24: ${Command}: ambiguous redirect Command是一个字符串,其中包含我要运行的脚本的名称及其参数。如果我将脚本更改为只打印命令

echo "ssh -i ${PemKey} ${User}@${URL} 'bash -s' -- < ${Command}"

然后自己运行命令它工作得很好。 我已经尝试将命令放在temp变量中,然后以这种方式调用它,如:

TEMP="ssh -i ${PemKey} ${User}@${URL} 'bash -s' -- < ${Command}"
$TEMP
echo $TEMP

这导致No such file or directory。同样,命令的回显版本在命令行运行得很好。

任何人都知道我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

似乎执行$TEMP无法正常工作,因为整个字符串'bash -s' -- < ${Command}ssh的参数中给出。事实上,如果您在远程主机上创建名为${Command}的文件,则会收到错误bash: bash -s: command not found

解决方案是使用eval,如下所示:

eval $TEMP

这确实应该做到了。