在远程的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”