これはまったく新しいトピックではないかもしれませんが、少し奇妙な状況に遭遇しました。しばらく前に完了したバックグラウンドプロセスの終了コードを取得
バックグラウンドでスクリプトを開始することで、ループ内で約1000のファイルを処理しています。私は各プロセスが返す終了コードに基づいてファイルに対していくつかのアクションを実行したいと思います。各プロセスが完了するのを待つループに入るときに、私はプロセスのいくつかがすでに完了していることを発見しました。私は、pgrepがプロセスを見つけて、それ以外の場合にはプロセスが正常に完了したと仮定した場合にのみ、スクリプトが待機するように修正しました。問題は、対応するファイルを処理するために各プロセスの終了コードを知る必要があることです。何か案は?
pid_list=() for FILE in $SOME_FOLDER do (process with FILE as parameter) & done
for pid in "${pid_list[@]}" do if pgrep $pid; then #process could have just completed as we got here if wait $pid; then echo "process $pid successfully completed!" >> $logfile else echo "process $pid failed!" >> $logfile fnc_error_exit fi else echo "assumed that process $pid successfully completed but I DON'T KNOW THE EXIT CODE!" >> $logfile continue fi done