我希望能够使用SSH从我的计算机上运行一个命令,并通过环境变量$BUILD_NUMBER
传递变量
这里就是我想:
ssh [email protected] '~/tools/myScript.pl $BUILD_NUMBER'
$BUILD_NUMBER
是在进行ssh调用的机器上设置,并且由于该变量在远程主机上不存在,所以它不会被拾取。
如何通过$BUILD_NUMBER
的值?
我希望能够使用SSH从我的计算机上运行一个命令,并通过环境变量$BUILD_NUMBER
传递变量
这里就是我想:
ssh [email protected] '~/tools/myScript.pl $BUILD_NUMBER'
$BUILD_NUMBER
是在进行ssh调用的机器上设置,并且由于该变量在远程主机上不存在,所以它不会被拾取。
如何通过$BUILD_NUMBER
的值?
如果使用
ssh [email protected] '~/tools/run_pvt.pl $BUILD_NUMBER'
你的shell
ssh [email protected] "~/tools/run_pvt.pl $BUILD_NUMBER"
而不是发送命令字符串到远程主机之前将插值$BUILD_NUMBER
。
如果有人必须使用单引号,以便包含在引号中的命令不在本地评估,那么他们应该使用“'$ VARIABLE'”。例如:ssh [email protected]'〜/ tools/run_pvt.pl''$ BUILD_NUMBER'''' – 2016-10-10 02:36:19
不知道bash对单引号和双引号的反应是不同的。谢谢! – silgon 2017-08-29 07:49:53
不评估单引号中的变量。使用双引号:
ssh [email protected] "~/tools/run_pvt.pl $BUILD_NUMBER"
shell将用双引号扩展变量,但不能用单引号括起来。在传递给ssh
命令之前,这将变成您想要的字符串。
逃离变量,以便访问变量SSH会话之外: SSH [email protected]“〜/工具/ myScript.pl \ $ BUILD_NUMBER”
这并没有达到问题所要求的。 – 2017-08-29 07:39:11
从shell的角度来看,''FOO''等同于'“\ $ FOO”'。问题是“如何通过SSH传递shell变量?”。正如@PatrickTrentin所述,这不是一个正确的答案,因为'BUILD_NUMBER'环境变量不是远程设置的。 – 2017-08-29 11:16:25
正如前面回答,你不需要在远程主机上设置环境变量。相反,您可以简单地在本地主机上进行元扩展,然后将值传递给远程主机。
ssh [email protected] '~/tools/run_pvt.pl $BUILD_NUMBER'
如果你真的想设置远程主机上的环境变量,并使用它,你可以使用env
程序
ssh [email protected] "env BUILD_NUMBER=$BUILD_NUMBER ~/tools/run_pvt.pl \$BUILD_NUMBER"
在这种情况下,这是一个有点矫枉过正的方法及注意事项
env BUILD_NUMBER=$BUILD_NUMBER
做本地 主机BUILD_NUMBER
环境变量将由
无关哈德森,除去标签一起使用。 (Hudson只是创建变量) – 2010-07-23 14:02:34