エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
UNIXコマンドとwhile文をパイプでつなぐケースでエラー時にリターンコードを返して異常終了させようとす... UNIXコマンドとwhile文をパイプでつなぐケースでエラー時にリターンコードを返して異常終了させようとするときの注意点です。 #!/bin/sh echo "debug:10" cat hoge.txt | while read LINE do echo "debug:20" exit 1 echo "debug:30" done echo "debug:40"期待する挙動はこうですが debug:10 debug:20実際の挙動はこのようになります。 debug:10 debug:20 debug:40catの結果をパイプで受け取ったwhile文はスクリプト実行のプロセスの小プロセスとなり、その小プロセス内のexit 1は自身を異常終了するだけなので、このような挙動になるようです。スクリプト実行の親プロセスは生きていて、子プロセスが死んだあとも以降の処理を継続するのです。 意図する挙動