2016-04-11 111 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