小编BiB*_*iBi的帖子

并行进程:将输出附加到 bash 脚本中的数组

我有一个 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)

输出为空。

更新 #1

关于task功能:

  • 该函数task需要一些时间来运行,然后输出一个字符串。收集完所有字符串后,另一个 for 循环将遍历字符串并执行其他一些任务。
  • 顺序无关紧要。输出字符串可以由单行字符串组成,可能包含多个由空格分隔的单词。

linux bash shell-script

4
推荐指数
1
解决办法
1997
查看次数

标签 统计

bash ×1

linux ×1

shell-script ×1