我想將環境變量傳遞給我的shell腳本,然後回顯出我傳入的內容。在本例中,$ HOME是已設置的環境變量。通過ssh傳遞環境變量以進行遠程擴展
./my_script.ksh $HOME
#! /usr/bin/ksh
my_var=${1}
echo "You sent: ${my_var}"
我希望我的輸出爲You sent: $HOME
,而是它正在評估它,是生產You Sent: /home/blah/usr
這樣做的一點是,我打算做,我需要一個SSH命令通過$ my_var太未評估(也就是$ HOME),因爲每個服務器上的$ HOME是一個不同的值,而對於SSH命令,我希望它使用來自服務器的SSH值。所以希望只是通過它在SSH期間,它會評估正確
這是我想要發生的一個例子。讓我們假設$ HOME已經被設置在Server1和Server2,如:
Server1 $HOME: /home/blah/usr
Server2 $HOME: /home/superblah/newusr
在Server1執行my_script.ksh $HOME
腳本是與上面的一個額外的行:
ssh [email protected] "echo Server got: $my_var"
什麼我輸出目前是:
You sent: /home/blah/usr
Server got: /home/blah/usr
我想要的只是ssh com要生產:
Server got: /home/superblah/newusr
謝謝。
要清楚,[your ** real ** question](http://stackoverflow.com/questions/42400222/use涉及SCP而不是SSH的-remote-environment-variables-value-in-scp-path)是非常相關的區別。 –
另外,使用'$ HOME'有點令人誤解 - 當SCP或SSH連接成爲$ HOME時,它會依賴於默認遠程目錄的答案,而您的真實用例需要更多的參與。 –
順便說一句,我在這裏寫代碼ksh93 - 如果你切換到bash,你想用'printf -v foo'%q'替換'foo = $(printf'%q'...)'' ......「,但其他情況不會改變。另一方面,如果你使用ksh的第三方克隆而不是真實的東西,我的第一個建議是切換 - 真正的ksh(如果你想要快速,有效和穩定的東西)或bash(用於不是那麼快,而是積極維護的 - 而且在目前的4.x版中,即使語法不同,也會對功能非常感興趣。 –