条件分岐 ~ if での分岐

if ~ 条件が成立したときに実行

code
if true; then
  echo '1. if ~ 条件が成立したときに実行される'
fi

if false; then
  echo '2. if ~ 条件が成立したときに実行される'
fi
stdout
1. if ~ 条件が成立したときに実行される

if ~ 条件が成立しないときに実行

code
if true; then
  :
else
  echo '1. if ~ 条件が成立しないときに実行される'
fi

if false; then
  :
else
  echo '2. if ~ 条件が成立しないときに実行される'
fi
stdout
2. if ~ 条件が成立しないときに実行される
code
# if ! ~ でコマンドの結果を反転
if ! true; then
  echo 'if ~ 条件が成立したときに実行される'
else
  echo 'if ~ 条件が成立しないときに実行される'
fi
stdout
if ~ 条件が成立しないときに実行される

if ~ コマンドが成功したときに実行

code
if date -d '2023/01/01' +'%Y/%m/%d'; then
  echo 'コマンドが成功したときに実行される'
fi
stdout
2023/01/01
コマンドが成功したときに実行される

if ~ コマンドが失敗したときに実行

code
# 2023/00/00 は不正な日付なので date コマンドは失敗する
if date -d '2023/00/00' +'%Y/%m/%d'; then
  echo 'コマンドが成功したときに実行される'
else
  echo 'コマンドが失敗したときに実行される'
fi
stdout
コマンドが失敗したときに実行される
stderr
invalid date '2023/00/00'
code
# if ! ~ でコマンドの実行結果を反転
if ! date -d '2023/00/00' +'%Y/%m/%d'; then
  echo 'コマンドが失敗したときに実行される'
fi
stdout
コマンドが失敗したときに実行される
stderr
invalid date '2023/00/00'

elsif ~ 前のコマンドが失敗したときに実行

code
if false; then
  echo 'if ~ のコマンドが成功したときに実行される'
elif true; then
  echo 'elif のコマンドが成功したときに実行される'
else
  echo 'if, elif のコマンドが失敗したときに実行される'
fi
stdout
elif のコマンドが成功したときに実行される
code
n=3
if test $n -eq 1; then
  echo 'n == 1'
elif test $n -eq 2; then
  echo 'n == 2'
elif test $n -eq 3; then
  echo 'n == 3'
else
  echo 'n != 1 and n != 2 and n != 3'
fi
stdout
n == 3