Geek-Side

Resource > if文

 if 条件 ; then
     処理
 elif 条件 ; then
     処理
 else
     処理
 fi



Andは -a、 Orは -o
 if [ "$hoge" != "$fuga" -o "$foo" != "$bar" ]

文字列をチェックする


条件式 詳細
= 文字列が等しい場合true
-n 文字列の長さが 0でなければ true
-z 文字列の長さが 0の場合 true

文字列比較を行う場合は変数をダブルクォートで囲みます。
 if_strEqual_check() {
     if [ "$1" = "hoge" ]; then
         echo "引数はhogeです";
     else
         echo "引数はhogeではないです";
     fi
 }
 
 if_n_check() {
     if [ -n "$1" ]; then
         echo "引数の長さは0ではないです";
     else 
         echo "引数の長さは0です";
     fi
 }

 if_z_check() {
     if [ -z "$1" ]; then
         echo "引数の長さは0です";
     else 
         echo "引数の長さは0ではないです";
     fi
 }


ファイルシステムの状態をチェックする


条件式 詳細
-e ファイルが存在した場合 true
-d ディレクトリであった場合 true

 if_e_check() {
     if [ -e $1 ]; then
         echo "$1 は存在します"
     else
         echo "$1 は存在しません"
     fi
 }
 
 if_d_check() {
     if [ -d $1 ]; then
         echo "$1 はディレクトリです"
     else
         echo "$1 はディレクトリではないです"
     fi
 }


数値をチェックする


条件式 詳細
-eq 数値が等しかった場合 true

 if_eq_check() {
     if [ $1 -eq 1 ]; then
         echo "引数は1です";
     else
         echo "引数は1ではないです";
     fi
 }


文字列のパターンマッチや正規表現マッチを行う

条件式を[[と]]で囲んだ場合は、パターンマッチや正規表現マッチが使用できるようになります。

条件式 詳細
== パターンマッチした場合 true
!= パターンマッチしなかった場合 true
=~ 正規表現マッチした場合 true


# 引数で与えられた文字列が "hogeabzfuga" の場合はパターンマッチします。
if_pattern_check() {
    if [[ "$1" == hoge* ]]; then
	echo "$1 はパターンマッチしました"
    else
	echo "$1 はパターンマッチしませんでした"
    fi   
}

# 引数で与えられた文字列が "hogeabzfuga" の場合は正規表現マッチします。
if_regexp_check() {
     if [[ "$1" =~ ^hoge[a-z]+fuga$ ]]; then
         echo "$1 は正規表現にマッチしました"
     else
         echo "$1 は正規表現にマッチしませんでした"
     fi   
}