書式
if【条件】
then
【実行されるコマンド等】
elif【条件】
then
【実行されるコマンド等】
else
【実行されるコマンド等】
fi
# if ~ then を1行に書く場合は then の前に ; が必要
if【条件】; then
【実行されるコマンド等】
elif【条件】; then
【実行されるコマンド等】
else
【実行されるコマンド等】
fi
多くの場合 if 直後には test コマンドを意味する [] が記述される
a と b の比較
if [ a -eq b ]; then echo 'a と b は等しいです (a = b)' # equal
elif [ a -ne b ]; then echo 'a と b は等しくありません (a ≠ b)' # not equal
elif [ a -lt b ]; then echo 'a は b よりも小さいです (a < b)' # less than
elif [ a -le b ]; then echo 'a は b 以下です (a ≦ b)' # less than or equal
elif [ a -gt b ]; then echo 'a は b よりも大きいです (a > b)' # greater than
elif [ a -ge b ]; then echo 'a は b 以上です (a ≧ b)' # greater than or equal
fi
ディレクトリが存在すれば真
if [ -d /home/user ]; then echo 'ホームディレクトリ以下に user というディレクトリがあります'
fi
ファイルが存在し、かつ通常ファイルならば真
if [ -f /home/test.txt ]; then echo 'ホームディレクトリに test.txt ファイルがあります'
fi
AND / OR 条件
オプションを利用
AND条件
if【条件1】 -a 【条件2】; then
【実行されるコマンド等】
fi
# ex. x=0, y=1 の場合
if [ x -lt y -a x -le y ]; then echo 'x は y よりも小さく、かつ x は y 以下です'
fi
OR条件
if【条件1】 -o 【条件2】; then
【実行されるコマンド等】
fi
# ex. x=0, y=1 の場合
if [ x -lt y -o x -le y ]; then echo 'x は y よりも小さい、または x は y 以下です'
fi
リスト演算子を利用
AND条件
if【条件1】 && 【条件2】; then
【実行されるコマンド等】
fi
# ex. x=0, y=1 の場合
if [ x -lt y ] && [ x -le y ]; then echo 'x は y よりも小さく、かつ x は y 以下です'
fi
OR条件
if【条件1】 || 【条件2】; then
【実行されるコマンド等】
fi
# ex. x=0, y=1 の場合
if [ x -lt y ] || [ x -le y ]; then echo 'x は y よりも小さい、または x は y 以下です'
fi
オプションの場合【条件1】と【条件2】を合わせて評価するが、リスト演算子の場合、
AND&&
は【条件1】の結果が「真」の場合に【条件2】を判断
OR||
は【条件1】の結果が「偽」の場合に【条件2】を判断
という評価処理になる点に注意。
【参考】
https://shellscript.sunone.me/if_and_test.html
https://qiita.com/toshihirock/items/461da0f60f975f6acb10