在 bash 中并行设置变量

Jac*_*ack 4 parallel-processing bash

这是一个示例程序:

#!/bin/bash

for x in {1..5}
do
  output[$x]=$(echo $x) &
done

wait

for x in {1..5}
do
  echo ${output[$x]}
done
Run Code Online (Sandbox Code Playgroud)

我希望它运行并打印出分配给output数组每个成员的值,但它什么也不打印。删除&正确分配变量。我必须使用不同的语法来并行实现吗?

Bri*_*new 5

这个

output[$x]=$(echo $x) &
Run Code Online (Sandbox Code Playgroud)

整个分配放在后台任务(子流程)中,这就是您看不到结果的原因,因为它没有传播到父流程。

您可以使用wait 来等待 subprocesses,但返回结果(状态代码除外)会很困难。也许您可以将中间结果写入文件,并在所有进程完成后收集这些结果?(不好,我欣赏)