C++の条件評価であるif文とswitch文を説明します。
if文とcase文
条件評価はif文とcase文の2通りあります。
bashは他言語と比べて少し特殊な使い方です。ワンライナーでは使うことはあまりないので、馴染みがない人もいますね。
testコマンド
if文の中の条件にはコマンドなら何を入れてもいいことになっています。0を返すかどうかで判定されます。※0が真です。C、C++は0が偽なので要注意です。
しかし、あまり変なコマンドを入れると混乱の元ですのでほどほどにしましょう。
よく使うのはtestコマンドです。
testコマンドの正確な仕様はgoogleでman testで検索するとマニュアルが出ますのでそちらを見てください。
例えばtest -f AAAAとするとAAAAがファイルであれば真、ファイルでなければ偽が返ってきます。
そして、ややこしいのですが、testコマンドは鉤カッコ([ ])で置き換えることができます。
test -f AAAA [ -f AAAA ] #同じものです
鉤カッコがたくさんあるシェルスクリプトを見たことがある人はいると思いますが、testコマンドですので、ググるときは気を付けてください。
注意ですが、[の後と]の前にはスペースが必須です。スペースを忘れて何時間も悩むという経験はつらいので、あらかじめ言っておきます。
if文
if文の文法
if文の使い方は以下が基本です。
thenの前後に改行が必要です。また、fiがないとだめです。
if 条件 then #何かやる else #他の何かをやる fi
elseは省略可能です。また、elifを付けて再び判定するのもありです。
つまり、以下のような文を書くことが可能です。
if 条件 then #何かやる fi if 条件1 then #何かやる elif 条件2 then #何かをやる elif 条件3 then #何かをやる else #最後に何かをやる fi if 条件1 then #何かやる elif 条件2 then #何かをやる elif 条件3 then #何かをやる fi
case文
case文の文法
case文の使い方は以下です。
case 文字列 in pattern1) コマンド ;; pattern2) コマンド ;; pattern3) コマンド ;; esac
コマンドは何もなくてもよいですが、;;は必須です。
patternのところにはワイルドカードなどの正規表現を利用できます。
まとめ
bashのif文、case文を説明しました。
私はbashのif文、case文はワンライナでは使うことはほぼないので忘れてしまいます。
コメント