我希望能夠使用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