基本構文
if 条件式1 ; then
処理1
elif 条件式2 ; then
処理2
else
処理3
fi
testコマンド
オプション | 使用例 | 説明 | 数式サンプル |
---|---|---|---|
-eq | test num1 -eq num2 | num1 と num2 が等しければ真 | num1=num2 |
-ne | test num1 -ne num2 | num1 と num2 が等しくなければ真 | num1≠num2 |
-lt | test num1 -lt num2 | num1 が num2 より小ならば真 | num1<num2 |
-le | test num1 -le num2 | num1 が num2 以下ならば真 | num1≦num2 |
-gt | test num1 -gt num2 | num1 が num2 より大ならば真 | num1>num2 |
-ge | test num1 -ge num2 | num1 が num2 以上ならば真 | num1≧num2 |
testコマンドは[]で代用可能
[ ]と[[ ]]はワード分割とパス名展開がされないという違いあり
val='hoge hoge'
[ $val == hogehoge ]; echo $?
bash: [: 引数が多すぎます
2
val='hoge hoge'
[ '$val' == hogehoge ]; echo $?
1
[[ ]]は変数展開をクォートする必要がない
val='hoge hoge'
[[ $val == hogehoge ]]; echo $?
1
ディレクトリがない場合
if [ ! -d log ]
then
echo log dir nothing!!
fi
http://shellscript.sunone.me/if_and_test.html
https://fumiyas.github.io/2013/12/15/test.sh-advent-calendar.html
変数が空でない場合のみ
if [ -n "$STRING" ]; then
#処理
fi
参考演算子的な、
# $foo が $bar より大きければ 0 、そうでなければ 1 を $baz に代入する。
[ $foo -ge $bar ] && baz=0 || baz=1
[[ CONDITION ]] && { CMD1; CMDn; } || { CMDe1; CMDen; exit; }
以降作成中。。。