- ベストアンサー
Bシェルでのif文について
あるファイルからgrepコマンドで抽出し、その値を変数に 入れてその値がNULLが確認したいのですが、うまくいきません。 どのようにすればNULLとして比較できますでしょうか。 ・「File」という名のファイル Period: Count: ※本来ならば「:」の後に数字が入るが 入っていない場合にはエラーとしたい ・grepの条件 TEST=`grep "^Period" File | cut -f 2 -d":"` ・if文 if [ ${TEST} != NULL ] then echo "ERROR" fi
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
NULLというのはC言語などでの話で、シェルスクリプトでは空文字列("")かどうかの比較になります。 そういういみでは、 test [ -z "$TEST" ] です。 実際にはgrepの終了コードで分岐すれば楽です。 :の後ろに空白が入っても駄目で、イキナリ数字と言うことでしょうか? 「数字以外の文字が入っていたらエラー」という処理が要らないのなら、 「Period:で行末が来てたらエラー」という処理になるので以下のコードで良いと思いますが。 if grep -q '^Period:$' File ;then echo error fi OSによっては、grep -q ではなくてgrep -sにしないといけないことがあります。 数字以外の文字があるのもエラーにしたければ、egrepをつかって、こうなるかな> if egrep -q '^Period:([^0-9]|$)' File ;then
お礼
ご回答ありがとうございます。 とても参考になりました。