对于数组中的每个项目,我想执行相同的命令。
cat dummy.sh
#!/bin/bash
declare -a LIST=(1 2 3 4 5 6 7 8 9 10)
for ITEM in ${LIST[@]}; do
sleep $ITEM
for i in $(seq 2); do
echo $ITEM
done
done
这是一个例子,但是这样的循环也不起作用。我想将每个for ITEM in ${LIST[@]}; do
(数组中每个项目的命令)发送到后台,以便它们同时执行。我怎样才能做到这一点?
答案 0 :(得分:4)
在循环中使用subshell,然后wait
使子进程完成:
#!/bin/bash
LIST=(1 2 3 4 5 6 7 8 9 10)
for ITEM in ${LIST[@]}; do
(
sleep $ITEM
for i in $(seq 2); do
echo $ITEM
done
) &
done
wait