シェルスクリプトも通常のプログラミング言語と同じように条件分岐を書けます.
ただいくつか記述上のルールもあるので注意が必要です.
今回はBashを使いシェルスクリプトでif文を書く方法について紹介します.
if文の基本構造
シェルスクリプトではif文を次のように書きます.
if <コマンド1>; then
<コマンド1>の結果が真のときの処理
elif <コマンド2>; then
<コマンド2>の結果が真のときの処理
else
上記の結果がすべて偽であるときの処理
fi
プログラミング言語と似た書き方なので読みやすいですね.
またelse句やelif句が省略可能な点もプログラミング言語との共通点でしょう.
サンプルコード
基本構造を例にコードを書きました.
if [ "$1" = "Monday" ]; then
echo "胸トレ"
elif [ "$1" = "Tuesday" ]; then
echo "脚トレ"
else
echo "おやすみ"
fi
$1
にはコマンドラインから引数が入ります.
この引数が Monday であれば「胸トレ」と表示し,Tuesday であれば「脚トレ」,それ以外の時は「おやすみ」と表示します.
引数が Monday なのでちゃんと「胸トレ」が表示されていますね!
このように変数の値によって表示する文字を変更できます.
if文を書くときの注意点
if文を使うにはいくつかルールがあります.
コマンドが実行できないこともあるので注意しましょう.
基本的に ; は省略できない
条件式の後の;
は基本的に省略できません.
どうしても;を書きたくないときは;の代わりに改行を入れましょう.
[] の前後のスペースは消せない
[]に関連するエラーケースを2つ紹介します.
①[]の中にある文字列の最初と最後のスペースを削除するとエラー
if文に誤りがあってもスクリプトは実行されるようです.
②if文と[]の間のスペースを削除するとエラー
今回のケースでは if が認識されていないためスクリプトが実行できていませんね.
[] は省略できない
[] はプログラミング言語でいう()に似ていますね.
言語によっては()は省略できましたが,シェルスクリプトでは [] を省略できません.
また [ はbashで用意された組み込みコマンドです.
[ は条件式と ] の引数を取る意味がありました.
fi や then は省略できない
if文の最後には必ずfiが必要です.
また条件式の後のthenも忘れてはいけません.
まとめ
今回はシェルスクリプトでif文を書く方法を紹介しました.
if文を書くときは細かいルールがありました.
- ;は省略できない(もしどうしても省略したいときは;の代わりに改行する)
- [] の前後のスペースは消してはいけない
- [] は省略できない
- fi や then も省略できない
書き方によってはスクリプトが実行できないので注意が必要ですね.
基本構文を守り,あまり省略して書かないことをおすすめします.