我有一个 for 循环,其中task调用了一个函数。每次调用该函数都会返回一个附加到数组的字符串。我想并行化这个 for 循环。我尝试使用&但它似乎不起作用。
这是未并行化的代码。
task (){ sleep 1;echo "hello $1"; }
arr=()
for i in {1..3}; do
arr+=("$(task $i)")
done
for i in "${arr[@]}"; do
echo "$i x";
done
Run Code Online (Sandbox Code Playgroud)
输出是:
hello 1 x
hello 2 x
hello 3 x
Run Code Online (Sandbox Code Playgroud)
伟大的!但是现在,当我尝试将它与
[...]
for i in {1..3}; do
arr+=("$(task $i)")&
done
wait
[...]
Run Code Online (Sandbox Code Playgroud)
输出为空。
关于task功能:
task需要一些时间来运行,然后输出一个字符串。收集完所有字符串后,另一个 for 循环将遍历字符串并执行其他一些任务。