代码之家  ›  专栏  ›  技术社区  ›  Testing123

使用bash将阵列传递到远程服务器

  •  0
  • Testing123  · 技术社区  · 6 年前

    我在bash脚本中有一个包含IP地址的数组。我一个接一个地对它们进行ssh,并使用here-doc在每个服务器上运行多个命令。从每台服务器,我想再次对所有服务器执行ssh,并运行一些命令。下面是一些代码。

    for i in "${IP_ADDRESSES[@]}"; do
    ssh -i "$LOCAL_PEM_FILE" "$USER"@"$i" bash << HERE
        for j in "${IP_ADDRESSES[@]}"; do
        echo \$j
    HERE
    done
    

    我希望$J是我可以一个接一个迭代的所有IP的列表,就像我在第一个for循环中对我所做的那样。相反,j以一个包含所有IP的空格分隔字符串的形式出现。

    有人遇到过类似的问题吗?任何帮助都非常感谢。

    1 回复  |  直到 6 年前
        1
  •  2
  •   oliv    6 年前

    for i in "${IP_ADDRESSES[@]}"; do
      ssh -i "$LOCAL_PEM_FILE" "${USER}@${i}" bash <<-HERE
        for j in ${IP_ADDRESSES[@]}; do
          echo \$j
        done
    HERE
    done
    

    Q

    for j in ${IP_ADDRESSES[@]@Q}; do ...