• ベストアンサー

ifとcaseについて

Tera Term proを使ってるんですが、 shell scriptで、 ifとcaseはどのように違うんでしょうか? 教えてください。

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

sh系のコマンドだと思って回答します。 if は、それに続くコマンドを実行し、結果が0かどうかで分岐します。 case は、文字列のパターンマッチをします。 ん、No.1 の回答と変わらないですね (^^; 例えば、あるファイルに文字列 XXX があれば、EXIST と表示するスクリプト。 if grep XXX filename then  echo XXX fi 一文字入力して、Y/N で処理を分けるようなスクリプト。小文字でもOKにしてます。 read x case $x in  y|Y) echo Yes;;  n|N) echo No;;  *) echo Else;; esac

janne
質問者

お礼

どうもありがとうございました。

その他の回答 (2)

  • mitsu-s
  • ベストアンサー率25% (7/27)
回答No.2

何のOS,shellを使用されているかわかりませんが、 ifは選択 caseは分岐 となります。 たとえば xという変数の中が0と1しか有り得ない場合はif xという変数の中身が0~5まで有り得る場合はcase というふうに使い分けます。

janne
質問者

お礼

どうもありがとうございました。

回答No.1

sh のことですね。 if は、与えたコマンドを実行させ、それが真か偽か(成功か失敗か)で条件分岐します。 case は、与えた文字列が、選択肢のどれにマッチするかを調べ、マッチした箇所に条件分岐します。 if で、[ ] などを使って、文字列の一致を調べるじゃないかという見方もできますが、実際には、[ ] は test という外部コマンドの別名であり、そのコマンドが文字列の一致を調べて成功したり失敗したりする機能をもっているだけです。

janne
質問者

お礼

どうもありがとうございました。

関連するQ&A