以下、個々のコマンドのプロセスIDを収集し、それらをbashの配列に追加するスクリプトがあります。なんらかの理由で、以下のstdoutを見ることができますが、結果として得られる配列には最新のidという項目が1つだけ含まれています。このスクリプトの末尾にあるPROCESS_IDS
アレイには、どのようにして4つのプロセスIDがすべて含まれていますか?ここでbashファイルの並列プロセスのプロセスIDの収集
PROCESS_IDS=()
function append {
echo $1
PROCESS_IDS=("${PROCESS_IDS[@]}" $1)
}
sleep 1 && echo 'one' & append $! &
sleep 5 && echo 'two' & append $! &
sleep 1 && echo 'three' & append $! &
sleep 5 && echo 'four' & append $!
wait
echo "${PROCESS_IDS[@]}"
stdoutです:
83873
83875
83879
83882
three
one
four
two
83882
最初の3行の最後に末尾の '&'を削除してみてください。 – Pavel
@pavelこれらの4行を並行して実行します。 – ThomasReggi
私はちょうどあなたに聞いたことがありました。しかし、私はそれらを並行して実行したいと思います。私は 'append'の中の' $ 1'変数にまだアクセスしています。ちょうど 'echo'は正しく配列に正しく格納されていません。 – ThomasReggi