f.txt の中身は abc の 1 行。2 行目の echo の出力は?
grep zzz f.txtecho $?正答
- 0
- 1
- 2
- abc
解説
$? は直前のコマンドの終了ステータスで、0 が成功、0 以外が失敗を表す。grep は少し特殊で、1 行以上一致すれば 0、1 行も一致しなければ 1、ファイルが無いなどのエラーなら 2 を返す。f.txt に zzz は無いので 1 になる。「コマンドはエラーなく動いたのだから 0」と考えがちだが、grep にとって一致なしは失敗扱いである。この仕様により if grep -q pattern file; then と書けて、一致の有無を条件分岐に使える。
参考: www.gnu.org
この問題を含む Linux・シェル のテストを制限時間つきで解く
Linux・シェルクイズへ