我正在尝试/tmp/cmd
使用 SSH 在远程计算机 (slc05bkt) 上执行本地文件(此处)。这是我从脚本文件中尝试的命令:
cmd="ssh -v ssuthari@slc05bkt \"bash -l -s\" < /tmp/cmd"
$cmd
它给了我以下例外:
ksh: line 1: /tmp/cmd: cannot open [No such file or directory]
即使我将此本地文件的副本添加到同一位置的远程计算机后,它仍然给我一个错误:
ksh: line 1: bash -l -s: not found
具有讽刺意味的是,我可以直接在命令行上执行命令,但无法从脚本中执行上述行。有人可以帮我解决这个问题吗?
答案1
$cmd
不会评估您的变量,它只是扩展它并作为字符串传递给 shell,这就是您收到错误的原因。对于你的情况,请尝试eval "$cmd"
。
无论如何,我建议使用$(ssh the_rest_of_your_command_line)
而不是eval "$cmd"
,因为这eval
是一个坏习惯。