前提
あるコマンドが標準出力した文字列の一行目の内容によって、残りの文字列の処理を振り分けることを(パイプなどを使って)並列に処理させることはできますか?
シェル:bash(あるいはzsh )
例えば、以下のコードの場合、somecmd
が出力した内容をいったんすべて outs
配列に入れて、その一行目が fzf
なら残りの出力を fzf に渡し、そうでなければそのまま出力しています。
しかしこれですと、somecmd
の処理が終了するまで待機することになるので、somecmd
に時間がかかる場合、並列処理できません。
bash
1IFS=$'\n' outs=($(somecmd)) 2if [[ "${outs[0]}" = "fzf" ]]; then 3 for str in "${outs[@]:1}"; do 4 echo "$str" 5 done | fzf 6else 7 for str in "${outs[@]:1}"; do 8 echo "$str" 9 done 10fi
何とか並列処理的に一行目を参照して二行目から処理を振り分ける方法はないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。