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

向ssh传递脚本时出现奇怪的bash错误,bash,ssh,Bash,Ssh,我正在尝试远程运行一个本地脚本,我正在使用其他代码调用该脚本。基本的甲酸盐是 ssh -i ${PemKey} ${User}@${URL} 'bash -s' -- < ${Command} 然后自己运行命令,它工作得很好。 我尝试将该命令放入一个temp变量中,然后以这种方式调用它,如: TEMP="ssh -i ${PemKey} ${User}@${URL} 'bash -s' -- < ${Command}" $TEMP echo $TEMP TEMP=“ssh-i${

我正在尝试远程运行一个本地脚本,我正在使用其他代码调用该脚本。基本的甲酸盐是

ssh -i ${PemKey} ${User}@${URL} 'bash -s' -- < ${Command}
然后自己运行命令,它工作得很好。 我尝试将该命令放入一个temp变量中,然后以这种方式调用它,如:

TEMP="ssh -i ${PemKey} ${User}@${URL} 'bash -s' -- < ${Command}"
$TEMP
echo $TEMP
TEMP=“ssh-i${PemKey}${User}@${URL}'bash-s'-<${Command}”
$TEMP
echo$TEMP
这导致
没有这样的文件或目录
。同样,命令的回显版本在命令行中运行良好


有人知道我做错了什么吗?

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

解决方案是使用
eval
如下:

eval $TEMP

这真的做到了它应该做的。

好吧,这对我来说很有效:
echo pwd | ssh localhost bash-s
这也很有效:
ssh localhost bash-s在
“${Command}”
(以及所有其他变量)周围使用双引号。另外,不要复制错误消息的粘贴部分:例如,
bash::没有这样的文件或目录
告诉您的方式不仅仅是人类可读的文本。Gaah,我在命令变量中的字符串周围有引号,所以没有按您的方式将它们放在字符串周围。移动它们可以修复一切,谢谢。如果你想把它作为一个答案,我很乐意接受。事实上没有。。。这会导致不明确的重定向错误,但会再次触发file not found dir,因为它会在远程计算机上查找脚本。
eval $TEMP