• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.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

question0523
質問者

お礼

ご回答ありがとうございます。 とても参考になりました。

関連するQ&A