私は約100のサブシェルを実行しており、それらのすべての結果をエコーしようとしています。コード:Bashの並列サブ・シェルの結果を得るには?
#!/usr/bin/env bash
function some_function(){} #spider
# ... ...
for i in {1..100}
do
array[$i]=some_function $i &
done
echo ${array[@]}
これらの評価はサブシェルで行われるので、何も得られません。
しかし、私はすべてが読めなく行わを、レーシングための代わりに、ループ内
echo $(some_function $i) &
を使用することはできません。
(set -a; array[$i]=some_function $i; set +a)&
または
if true; then set -a; array[$i]=some_function $i; set +a; fi &
はどちらか動作しませんでした理由はありませんアイデアが。
私は、一時ファイルまたはfifoまたはfdを別の場所で使用しないように最善を尽くしました。
適切な方法は何ですか?
編集:私はGNU-Parallelが動作するかどうかは疑問ですが、msys2にはありません。
GNU 'parallel'は、バックグラウンド・プロセスを起動するだけで、別の方法です。それ自身は*別の外部プロセスなので、呼び出し側シェルにシェル変数を設定することはできません。 – chepner