在远程的ssh命令中传递variables
我希望能够使用ssh从我的机器运行命令,并通过环境variables$ BUILD_NUMBER
这就是我想要的:
ssh pvt@192.168.1.133 '~/tools/myScript.pl $BUILD_NUMBER'
在进行ssh调用的机器上设置$ BUILD_NUMBER,由于该variables在远程主机上不存在,因此不会被拾取。
如何传递$ BUILD_NUMBER的值?
如果你使用
ssh pvt@192.168.1.133 "~/tools/run_pvt.pl $BUILD_NUMBER"
代替
ssh pvt@192.168.1.133 '~/tools/run_pvt.pl $BUILD_NUMBER'
在将命令string发送到远程主机之前,您的shell将插入$BUILD_NUMBER
。
不会评估单引号中的variables。 使用双引号:
ssh pvt@192.168.1.133 "~/tools/run_pvt.pl $BUILD_NUMBER"
shell将用双引号扩展variables,但不能用单引号。 在传递给ssh
命令之前,这将变成你想要的string。
如前所述,您不需要在远程主机上设置环境variables。 相反,您可以简单地在本地主机上进行元扩展,然后将值传递给远程主机。
ssh pvt@192.168.1.133 '~/tools/run_pvt.pl $BUILD_NUMBER'
如果你真的想在远程主机上设置环境variables并使用它,你可以使用env
程序
ssh pvt@192.168.1.133 "env BUILD_NUMBER=$BUILD_NUMBER ~/tools/run_pvt.pl \$BUILD_NUMBER"
在这种情况下,这有点矫枉过正,注意
-
env BUILD_NUMBER=$BUILD_NUMBER
在本地主机上进行元扩展 - 远程
BUILD_NUMBER
环境variables将被使用
远程shell
转义variables以访问ssh会话之外的variables:ssh pvt@192.168.1.133“〜/ tools / myScript.pl \ $ BUILD_NUMBER”