2016-04-11 149 views
0

當使用bash for循環和ssh到多個機器時,hostname變量不會更新爲我已經ssh進入的機器的名稱。Bash ssh for循環 - env變量問題

我在這裏錯過了什麼?

將「A」,「B」,「C」替換爲實際機器的名稱和實際執行中刪除的語音標記。

for node in "A" "B" "C" ; 
do 
    ssh $node "echo $node $HOSTNAME is alive" ; 
done 

在上面的例子中,$ node被正確輸出,但$ HOSTNAME是我從SSH獲得的機器的名稱。

回答

2

使用單引號:

for node in "A" "B" "C" ; 
do 
    ssh $node 'echo $HOSTNAME is alive'; 
done 

如果你需要傳遞$node

ssh [email protected] 'echo ' $node ' $HOSTNAME is alive' 

如果使用雙引號,那麼你目前的機器的主機名值傳遞到遠程機器。

+0

@IanWatson,如果此答案有助於解決您的問題,請單擊左側的投票箭頭下方的勾號(複選標記)以接受答案(http://meta.stackoverflow.com/questions/251078/how-to - 更新 - 和接受,答案) – sat