2016-04-11 22 views
0

Döngü için bash ve birden fazla makineye ssh'ing kullanıldığında, hostname değişkeni, ssh'düğüm makinenin adı olarak güncellenmez.Bash ssh for loop - env ​​değişken sorunu

Burada nelerin eksik? "A", "B", "C", gerçek makinelerin adları ve gerçek uygulamada kaldırılan konuşma işaretleriyle değiştirilir. $ Düğüm Yukarıdaki örnekte

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

doğru çıkan, ancak $ HOSTNAME'deki i SSH makine adıdır.

cevap

2

Kullanım tek tırnak:

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

Eğer $node geçmesi gerekiyorsa,

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

çift tırnak kullanırsanız, o zaman uzak bir makineye cari makinenin HOSTNAME değerini geçiyoruz .

+0

@IanWatson, Bu cevap sorununuzu çözmemize yardımcı olduysa, yanıtı kabul etmek için oy oklarının altındaki soldaki onay işaretine tıklayın (http://meta.stackoverflow.com/questions/251078/how-to -Update-ve-kabul-cevapları) – sat