bash - 带有/空格+ ssh的变量

标签 bash unix ssh

编辑:

看来我的主要问题是通过FOR循环的每次迭代来处理远程主机上的“word”为空。当我回显它时,COLORS变量看起来不错,它显示了所有四种颜色。

我有一个带有通过ssh调用的FOR循环的bash脚本,如下所示:

ssh user@host02 <<EOF

COLORS=RED GREEN WHITE ORANGE

for word in $COLORS; do
 echo $word
done

exit
EOF

我的输出如下所示:
ORANGE
ORANGE
ORANGE
ORANGE

FOR循环在COLORS变量中标识4个空格分配的args,因为它循环并回显应有的4倍,但它仅显示最后一个arg ORANGE。我可以更改什么以使每个args回显?

最佳答案

2个问题:

  • 用引号引起来的变量赋值:COLORS="RED GREEN WHITE ORANGE"
  • 在HEREDOC中使用时转义$

  • 下面的代码有效:
    ssh user@host02 <<EOF
    
    COLORS="RED GREEN WHITE ORANGE"
    
    for word in \$COLORS; do
     echo \$word
    done
    
    EOF
    

    我还从中删除了不必要的退出语句。

    关于bash - 带有/空格+ ssh的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17045932/

    相关文章:

    linux - 命令 blkid 不显示我的分区 UUID

    c - 在C中打印待处理信号队列中的阻塞信号

    java - 如何使用 JPA 通过 SSH 连接到远程 MySQL 服务器?

    linux - 守护进程在进程被杀死时重新启动进程

    linux - 如何在 shell 脚本中包含包含变量的文件

    bash - grep 数字范围

    linux - Bash - 找到每行的最小数量

    java - SFTP:如何知道我正在连接到 UNIX 还是 Windows 主机?

    linux - Ansible 密码权限提升问题

    ssh - Paramiko——在 OS X 上使用加密的私钥文件