linux - Bash ssh for loop - 环境变量问题

标签 linux bash ssh

当使用 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/

相关文章:

python - 在 C 中对 BlueZ 提供的文件描述符进行操作

bash - 如何在 awk 脚本中使用 shell 变量?

bash - 如何使用 djpeg 和 pnmtopng 将 jpeg 转换为 png?

linux - 使用 grep 递归定位所有具有字符串 "a"和字符串 "b"的文件

linux - 为什么命名信号量可以被任何知道其名称的进程中的线程使用?

linux - 什么时候 "bash -c"会导致创建子 shell?

java - 如何使用ssh以编程方式将远程端口3306转发到android中的本地端口并连接到mysql

bash - 如何将任意参数传递给通过SSH执行的命令?

java - 使用 setOutputStream 将 JSch exec channel 的输出流重定向到文件不起作用

c - 使用 rpcgen 的简单计算器