我想要完成的事情是这样的。
Servers = (11, 12, 13)
ssh -t [email protected] << EOF
sudo tar -zcf somefolders.tar.gz ~/somefolders
for i in "${Servers[@]}"
sudo scp somefolders.tar.gz [email protected].$i:~
EOF
现在问题出在for
循环上,因为它是在远程主机上执行的,没有Servers
参数,而且它本来就是一个独立的命令。我知道它为什么这样做,但我不知道如何正确地做到这一点?我该如何正确执行那个 for 循环?
我知道一个解决方案是使用不同的 IP 地址多次写入操作,但我们知道这不是编写代码的有效方法。
提前致谢。
答案1
您不必为此使用 bash 数组,只需使用以空格分隔的服务器列表:
该$Server
变量将由您的 shell 本地解释,并且传递给 10.1.1.10 的脚本将for i in 11 12 13 ;...
在其内容中包含“ ”来发送。
Servers="11 12 13"
ssh -t [email protected] << EOF
sudo tar -zcf somefolders.tar.gz ~/somefolders
for i in $Servers ;do
sudo scp somefolders.tar.gz [email protected].\$i:~
done
EOF