gpt4 book ai didi

arrays - 使用文件输入运行并行命令的 Bash 脚本

转载 作者:太空狗 更新时间:2023-10-29 12:01:09 26 4
gpt4 key购买 nike

我正在尝试制作一个 shell 脚本,它读取配置文件并为每一行并行执行命令。

例如,我有 IPs.cfg,它可以包含可变数量的 IP。可以是一个也可以是几个

IPs.cfg

145.x.x.x
176.x.x.x
192.x.x.x

我想读取文件,然后同时为每一行执行一个命令...例如:

scp test.iso root@$IP1:/tmp &
scp test.iso root@$IP2:/tmp &
scp test.iso root@$IP3:/tmp &
wait

我的想法是将 IP 存储到一个数组中

IFS=$'\n' read -d '' -r -a array < IPs.cfg

然后我从文件中提取行数并将其减 1,因为数组从 0 开始。

NUMLINES=`cat IPs.cfg | wc -l`
NUMLINES=$((NUMLINES-1))

现在我想同时执行所有命令。这是可变数量的参数,所以我不能只手动使用 scp test.iso root@${array[0]}:/tmp & scp test.iso root@${array[1]}:/tmp等等。我可以使用 while 循环,但这意味着一次执行一个命令。我也在考虑使用递归,但我从未在 bash 脚本中这样做过。

这可能是一个愚蠢的问题,但我在这里有哪些选择?

最佳答案

您可以使用 GNU parallel

关于arrays - 使用文件输入运行并行命令的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36085843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com