シェルスクリプトで、配列内の文字列と一致するかどうかで動作を切り替えたい事があったので、その備忘。
関数を作成しない場合、以下のようにすることで配列内に値がない場合は指定した動作を行わせる事ができる。
例)array配列内に、変数wordで指定した文字列がない場合、ifで指定した処理を実行させる。
#!/bin/sh array=("one" "two" "three"); word=$1 if ! `echo ${array[@]} | grep -q "$word"` ; then echo "値がありませんでした" fi
[root@test-centos7 ~]# sh -x /work/test4.sh one + array=("one" "two" "three") + word=one ++ echo one two three ++ grep -q one [root@test-centos7 ~]# sh -x /work/test4.sh four + array=("one" "two" "three") + word=four ++ echo one two three ++ grep -q four + echo $'\345\200\244\343\201\214\343\201\202\343\202\212\343\201\276\343\201\233\343\202\223\343\201\247\343\201\227\343\201\237' 値がありませんでした
その他にも色々とやり方があるようなので、興味があるのであればこちらを参考にすると良いだろう。
![すべてのUNIXで20年動くプログラムはどう書くべきか デプロイ・保守に苦しむエンジニア達へ贈る[シェルスクリプトレシピ集]](http://ecx.images-amazon.com/images/I/51opLnpg2vL._SL160_.jpg)