条件の判定(if文)
前回迄で以下の初歩的な事を実践してみました。
・文字列の表示方法(echoコマンド)
・オプションの取得(位置パラメータ)
・変数の宣言
・変数の出力
今回からはもう少しだけスクリプトっぽい事をやる事にします。
前回作成したスクリプトは以下の様な物でした。
#!/bin/bash
V_OPTION=$1
echo "Hello${V_OPTION}World!!"
今回はこのスクリプトを元に新たなスクリプトを作成します。
前回のスクリプトでは、以下の事を実装していました。
・スクリプトの第一オプションに渡された文字列を含めて、「Hello[第一オプション]World!!」と表示する
これを以下の新たな条件に変更します。
・第一オプションが「bash」だったら「Hello bash World!!」と表示し、「Linux」だったら「Hello Linux OS!!」と表示する。
このように「条件」が分岐したり結果が複数になる事ををやる時には「条件文」を使用します。
今回は条件文の基本となる「if」文について勉強したいと思います。
if文の基本的な構文は以下の通りです。
if 判定文1 then 判定文1が正しい時の処理 elif 判定文2 then 判定文1が正しくなく、且つ、判定文2が正しい場合の処理 else 判定文1も判定文2も正しくない場合の処理 fi
上記の文の組み合わせによってif文は構成され、最期はifを反対から書いた「fi」で終わります。
上記の様に、判定するべき条件項目が2つではなく、真偽2つだけのif文も書けますし、真だけを判定する事もできます。
●判定文が真の時だけ何か処理を行う場合
if 判定文1 then 判定文1が正しい時の処理 fi
●判定文が真の時と偽の時に処理を行う場合
if 判定文1 then 判定文1が正しい時の処理 else 判定文1が正しくない場合の処理 fi
●判定項目が2つある処理を行う場合
if 判定文1 then 判定文1が正しい時の処理 elif 判定文2 判定文2が正しい時の処理 fi
さて、今回の条件の場合、どのような形のif文を書けば良いでしょうか?
・第一オプションが「bash」だったら「Hello bash World!!」と表示する。
・第一オプションが「Linux」だったら「Hello Linux OS!!」と表示する。
上記の様に「真」判定が2種類の条件文を書けば良い事になります。
if 第一オプションが「bash」かを判定する判定文 then echo "Hello bash World!!" elif 第一オプションが「Linux」かを判定する判定文 then echo "Hello Linux OS!!" fi
こうなると、8割方完成ですね。
あとは「判定文」を書くだけです。
判定文には、便利なコマンドが用意されています。「test」コマンドです。
この「test」コマンドは、判定式が真(0)か偽(1)かを判定してくれます。if文ととても相性の良いコマンドです。
早速「test」コマンドを使用して、スクリプトを完成させてみます。
エディタを使って「helloworld3.sh」に以下を書いて実行してみましょう。
#!/bin/bash
V_OPTION=$1
if test ${V_OPTION} = "bash"
then
echo "Hello bash World!!"
elif test ${V_OPTION} = "Linux"
then
echo "Hello Linux OS!!"
fi
実行結果
# chmod +x helloworld3.sh # ./helloworld3.sh bash Hello bash World!! # ./helloworld3.sh Linux Hello Linux OS!! #
ちゃんと出力されましたか?
・第一オプションが「bash」だったら「Hello bash World!!」と表示する。
・第一オプションが「Linux」だったら「Hello Linux OS!!」と表示する。
確かに上記の要件を満たしてますので、一応これで完成です。
ですが、このスクリプトには色々な問題点が秘められています。
次回は、このスクリプトの問題点を修正していきます。
