※MACターミナル(BSD系)での動作確認です。
スポンサーリンク
grep時に$?を参照して、検索にマッチしたか否かをif文で判定
grep時に$?を参照
grep時に$?の変数を参照することで、grep検索にマッチしたかを確認することができます。
$?が0の時はgrep検索にマッチした行があり、$?が1の時はgrep検索にマッチした行がなし。
例えば、下記のin.txtがあったとします。
$ cat in.txt line001 line002 linetarget003 line004
下記のように、"target"の文字列をgrep検索します。
$ grep "target" in.txt
下記が実行結果になります。
$ grep "target" in.txt linetarget003
マッチした行があるので、$?が0となっているのが確認できます。
$ echo $? 0
下記のように、"NO"の文字列をgrep検索します。
$ grep "NO" in.txt
マッチした行がないので、$?が1となっているのが確認できます。
$ grep "NO" in.txt $ echo $? 1
スポンサーリンク
if文で判定
if文で$?を参照して判定するのも良いかと思います。
同様に、下記のin.txtがあったとします。
$ cat in.txt line001 line002 linetarget003 line004
下記が、grep検索にマッチした場合のサンプルコードになります。
$ cat sample1.sh #!/bin/sh grep "target" in.txt if [ $? = 0 ]; then echo "grep検索にマッチした行があり" else echo "grep検索にマッチした行はなし" fi
下記が実行結果になります。
$ ./sample1.sh linetarget003 grep検索にマッチした行があり
下記が、grep検索にマッチしなかった場合のサンプルコードになります。
$ cat sample2.sh #!/bin/sh grep "NO" in.txt if [ $? = 0 ]; then echo "grep検索にマッチした行があり" else echo "grep検索にマッチした行はなし" fi
下記が実行結果になります。
$ ./sample2.sh grep検索にマッチした行はなし
スポンサーリンク