当使用 bash for 循环并通过 ssh 连接到多台机器时,主机名变量不会更新为我通过 ssh 连接到的机器的名称。
我在这里错过了什么?
“A”、“B”、“C”替换为实际机器名称,并在实际执行中去除语音标记。
for node in "A" "B" "C" ;
do
ssh $node "echo $node $HOSTNAME is alive" ;
done
在上面的示例中 $node 被正确输出,但 $HOSTNAME 是我从 SSH 连接的机器的名称。
最佳答案
使用单引号:
for node in "A" "B" "C" ;
do
ssh $node 'echo $HOSTNAME is alive';
done
如果需要传递$node
,
ssh root@192.168.6.208 'echo ' $node ' $HOSTNAME is alive'
如果您使用双引号,那么您会将当前机器的 HOSTNAME 值传递给远程机器。
关于linux - Bash ssh for loop - 环境变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36546234/