Bashでシェルスクリプト if文で条件分岐

bashシェルスクリプトで条件分岐

Linuxのコマンドライン入力シェルでは一行一行コマンドの入力を受け付けて実行する以外にあらかじめテキストに書かれたコマンド一覧(シェルスクリプト)を読み込んで実行する方法もあります。

本記事では代表的なシェルBashを使った「シェルスクリプト」の作成方法を紹介します。

BashシェルスクリプトでIf文を書こう!

Linuxのシェルに限らず、MacOSやWindowsのコマンドプロンプトでもスクリプトは利用できます。

特にLinuxはコマンドラインでOS全てを動かすことができるので、シェルスクリプトと相性がいいです。

シェルスクリプトでもIf文などの条件分岐やfor文などの繰り返し構文が利用できるので簡単なプログラミングが可能です。

If文を動かす

シェルスクリプトでif文の書き方は他のプログラミング言語と基本は同じです。

  • if [条件分岐式]; then 処理 else 処理 fi が基本型
  • 条件分岐式はスペースが開いていないとエラーがでる
    • 例 [ ”$A” = ”$B” ]; → OK
    • 例 [“$A”=”$B”];→ エラー
  • 3分岐以上はelifを入れる
    • if [条件分岐式]; then 処理 elif [条件分岐式]; ・・・
  • 分岐処理がない場合はechoや「:」などを入れないとエラーになる
シェルスクリプト 条件分岐if
#!/bin/bash
echo -n "Do you want to change the settings?(y/n)"
read CHOICE1
echo "you choose $CHOICE1"
if [ "$CHOICE1" = "y" ]; then
        echo -n "what is your hostname?:" && read HOSTNAME
else
        echo "OK.exit the script"
fi
#read -p "print sentence" Var
echo "$HOSTNAME"

質問に対してyとnで条件分岐が始まります。

yを選んだ場合はhostnameを聞かれ、表示されます。nを選んだ場合は文が表示されて終了します。

Ifの条件式にANDとORを入れる

先ほどの条件式ではユーザーにy/nの入力を求めて、入力に応じて出力するスクリプトを書きましたが、人によってはyを大文字で入力したり、yesと入力する人もいるかもしれません。そこで条件式に AかつB (AND)やAまたはB(OR)を加えたいと思います。シェルスクリプトではANDは&&、ORは||で表記します。

シェルスクリプト if条件式にOR
echo "you choose $CHOICE1"
if [ "$CHOICE1" = "y" ] || [ "$CHOICE1" = "Y" ]; then
        echo -n "what is your hostname?:" && read HOSTNAME
else
        echo "OK.exit the script"
fi
#read -p "print sentence" Var
echo "$HOSTNAME"

これで、yまたはYを入力した場合にhostnameの入力が効かれるようになります。もっと増やしたい場合はさらに||で加えることができます。

コマンドの実行制御bashでコマンドを複数、連続で実行!コマンド制御について bashの使い方Linuxのシェル Bashのコマンドと使い方

コメントを残す

メールアドレスが公開されることはありません。