コマンドの説明
if文で条件分岐を記述します。
使い方
if文は下記のように記述します。
例1)基本
if [[ <条件文1> ]] then
<式1>
elif [[ <条件文2> ]] then
<式2>
else
<式3>
fi
例2)条件式の書き方
a="hoge"
b="fuga"
if [[ $a == "hoge" ]] then
echo "true"
fi
if [[ ! $a == "fuga" ]] then
echo "false"
fi
if [[ $a == "hoge" && $b == "fuga" ]] then
echo "&&"
fi
if [[ $a == "hoge" || $b == "fuga" ]] then
echo "||"
fi
オプション
オプションは下記のように記述します。
if [[ <option> <引数> ]] then
例)if [[ -a “hoge.txt” ]] then
ファイル操作
-a, -e “ファイルA”
パスが存在する
-d “ファイルA”
ディレクトリが存在する
-f “ファイルA”
ファイルが存在する
-h, -L “ファイルA”
シンボリックリンクが存在する
-r “ファイルA”
リード権限がある
-w “ファイルA”
ライト権限がある
-x “ファイルA”
実行権限がある
-s “ファイルA”
中身が空でないファイル
“ファイルA” -ot “ファイルB”
ファイルAよりファイルBが新しい
“ファイルA” -nt “ファイルB”
ファイルBよりファイルAが新しい
“ファイルA” -ef “ファイルB”
ファイルAとファイルBが同じ
文字列操作
“文字列A” == “文字列B”
文字列Aと文字列Bが等しい
“文字列A” != “文字列B”
文字列Aと文字列Bが異なる
“文字列A” =~ “正規表現”
正規表現
“文字列A” < “文字列B”
ASCIIコードで文字列Aより文字列Bが大きい数字
“文字列A” > “文字列B”
ASCIIコードで文字列Bより文字列Aが大きい数字
-z “文字列A”
文字列Aが空
-n “文字列A”
文字列Aが空でない
数式操作
<数1> -eq <数2>
<数1>と<数2>が等しい
<数1> -lt <数2>
<数1>より<数2>が大きい
<数1> -le <数2>
<数1>より<数2>が大きいか等しい
<数1> -gt <数2>
<数1>より<数2>が小さい
<数1> -ge <数2>
<数1>より<数2>が小さいか等しい
その他
-v <変数>
<変数>が定義されていない
サンプル
ファイル操作
if [[ -a "./file" ]] then
echo "a"
fi
if [[ -e "./file" ]] then
echo "e"
fi
if [[ -d "./dir" ]] then
echo "d"
fi
if [[ -f "./file" ]] then
echo "f"
fi
if [[ -h "./link" ]] then
echo "h"
fi
if [[ -L "./link" ]] then
echo "L"
fi
if [[ -r "./unread" ]] then
:
else
echo "r"
fi
if [[ -s "./hoge.txt" ]] then
echo "s"
fi
if [[ -w "./unwrite" ]] then
:
else
echo "w"
fi
if [[ -x "./unexe" ]] then
:
else
echo "x"
fi
if [[ "./older" -ot "./newer" ]] then
echo "ot"
fi
if [[ "./older" -nt "./newer" ]] then
:
else
echo "nt"
fi
if [[ "./hoge.txt" -ef "./hoge.txt" ]] then
echo "ef"
fi
文字列操作
a="hoge"
b=""
if [[ $a == "hoge" ]] then
echo "=="
fi
if [[ $a != "hoge" ]] then
:
else
echo "!="
fi
if [[ $a =~ ".*ge" ]] then
echo "=~"
fi
if [[ "b" > "a" ]] then
echo ">"
fi
if [[ "b" < "c" ]] then
echo "<"
fi
if [[ -n $b ]] then
:
else
echo "n"
fi
if [[ -z $b ]] then
echo "z"
fi
数式操作
a=10
if [[ $a -eq 10 ]] then
echo "eq"
fi
if [[ 9 -lt 10 ]] then
echo "lt"
fi
if [[ 10 -le 10 ]] then
echo "le"
fi
if [[ 11 -gt 10 ]] then
echo "gt"
fi
if [[ 10 -ge 10 ]] then
echo "ge"
fi
その他
if [[ -v c ]] then
:
else
echo "v"
fi
まとめ
if文についてまとめました。
参考文献
ZSH - Documentation
コメント