今号では、前回より引き続き知っておくとちょっと便利なシェルスクリプトの基本についてご紹介します!
コマンド例2 (if 文)
- if 文とは
条件分岐をさせるための構文
実行結果によって、プログラムに違う動作をさせる - 構文(基本系)
if [ 条件式 ] ;then (実行結果が条件に合致した場合に行う処理) fi
※”[” および “]” と条件式の間には、スペース (空白) が必要です。
- 例文(基本系)
例文では、条件式の中で 2つの文字列 ($txt1, txt2) の値を比較し、同じ値である場合 “true” という文字を出力しています。
下記の場合、2つの文字列 ($txt1, txt2) に同じ値 “txt” が入っているため、”true” が出力されました。# cat oss2-1.sh #!/bin/bash txt1="txt"; txt2="txt"; if [ $txt1 = $txt2 ] ;then echo "true"; fi # ./oss2-1.sh true
なお、下記のように 2つの文字列 ($txt1, txt2) にそれぞれ違う値 “txt1″,”txt2” を指定すると、
条件に合致した場合の処理 (echo “true”) は実行されず、何も出力されません。# cat oss2-1.sh #!/bin/bash txt1="txt1"; txt2="txt2"; if [ $txt1 = $txt2 ] ;then echo "true"; fi # ./oss2-1.sh #
- if文で使用できる演算子
if文における “[ ]” 内の条件式では、様々な演算子が使用できます。
ここですべての演算子をご紹介することはできませんが、とりわけ使う頻度が高いと考えられるもの、
OSSエンジニアが日頃からよく使用しているものをピックアップしてご紹介します。演算子 使用例 意味 -eq 数値1 -eq 数値2 数値1と数値2の値が等しければ、条件に合致 -ne 数値1 -ne 数値2 数値1と数値2の値が等しくなければ、条件に合致 = 文字列1 = 文字列2 文字列1と文字列2の値が等しければ、条件に合致 != 文字列1 != 文字列2 文字列1と文字列2の値が等しくなければ、条件に合致 -e -e ファイル名 指定したファイル名が存在するならば、条件に合致 -a 条件1 -a 条件2 条件1および条件2のどちらも成り立つ場合、条件に合致 -o 条件1 -o 条件2 条件1もしくは条件2のどちらかが成り立つ場合、条件に合致 -eq 演算子で、2つの数値を比較するスクリプトの例
# cat oss2-2.sh #!/bin/bash num1=100; num2=100; if [ $num1 -eq $num2 ] ;then echo "true"; fi # ./oss2-2.sh true
-e 演算子で、指定したファイルが存在するかを確認するスクリプトの例
# cat oss2-3.sh #!/bin/bash file="/var/log/messages" if [ -e $file ] ;then echo "true"; fi # ./oss2-3.sh true
※次号では、シェルスクリプトの作り方 (if文、ちょっと応用編) についてご紹介していきます。