Linuxのコマンドライン入力シェルでは一行一行コマンドの入力を受け付けて実行する以外にあらかじめテキストに書かれたコマンド一覧(シェルスクリプト)を読み込んで実行する方法もあります。
本記事では代表的なシェルBashを使った「シェルスクリプト」の作成方法を紹介します。
BashシェルスクリプトでIf文を書こう!
Linuxのシェルに限らず、MacOSやWindowsのコマンドプロンプトでもスクリプトは利用できます。
特にLinuxはコマンドラインでOS全てを動かすことができるので、シェルスクリプトと相性がいいです。
シェルスクリプトでもIf文などの条件分岐やfor文などの繰り返し構文が利用できるので簡単なプログラミングが可能です。
If文を動かす
シェルスクリプトでif文の書き方は他のプログラミング言語と基本は同じです。
- if [条件分岐式]; then 処理 fi が基本型
- 条件分岐式はスペースが開いていないとエラーがでる
- 例 [ ”$A” = ”$B” ]; → OK
- 例 [“$A”=”$B”];→ エラー
- 3分岐以上はelifを入れる
- if [条件分岐式]; then 処理 elif [条件分岐式]; ・・・
- 分岐処理がない場合はechoや「:」などを入れないとエラーになる
- ※「:」ヌルコマンドは何もしないでtrueを返す
シェルスクリプト 条件分岐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の入力が効かれるようになります。もっと増やしたい場合はさらに||で加えることができます。