从shell中的ssh调用获取局部变量

时间:2014-03-11 08:42:01

标签: linux bash shell ssh

我有一个名为global.sh的脚本,它在远程计算机上复制一个名为my_local_script.sh的shell脚本。

scp my_local_script.sh host@user_a:remote_directory

然后我连接到那个ssh主机并像这样执行它

ssh host@user "
                cd remote_directory
                ./my_local_script.sh
              "

到目前为止一切都很好,一切正常,问题是我想在my_local_script.shglobal.sh内获取一个局部变量。我试过这个

ssh host@user "
                cd remote_directory
                my_arg=$(./my_local_script.sh)
              "

但这不起作用,甚至我本地脚本的调用也不再正常工作。任何建议我如何克服这个问题。

PS:无法将变量复制到临时文件。如果可能的话,我正在为此寻找一个shell解决方案。

1 个答案:

答案 0 :(得分:2)

您正在使用命令替换,这是必要的,但它位于错误的位置。您应该将它放在整个SSH命令周围:

my_var=$(ssh host@user "cd remote_directory; ./my_local_script.sh")

这假设您要捕获的变量由my_local_script输出,例如echoprintf