Masayan tech blog.

  1. ブログ記事一覧>
  2. シェルスクリプトの基本:条件分岐

シェルスクリプトの基本:条件分岐

公開日

環境

  • gitbash 2.32.0.1

いろいろな条件分岐

  • シェルスクリプトでは、if分の条件式を[]の中に記述する
    if [条件式]; then
      処理
    fi
  • if分はfiで閉じる
  • 複数分岐の場合はelifを使用する(多言語でいうelse if)
  • [ "A"="B" ]のように[]の間にスペースがないとエラーとなる
  • 条件式で<,>,<=,>=は使えない。代わりに-lt(<),-gt(>),-le(<=),-ge(>=)が使用できる
  • 数値の比較には、-eq(等しい場合は真)や-ne(等しくない場合は真)を使用する必要がある

条件式が成り立つことをチェックする

Aが空文字であることをチェックする

A = ""

if [ "$1" = "" ]; then
  echo "version番号の指定は必須です"
  return
fi

Aに値が存在することをチェックする

-n "A"

文字列の長さが1以上だったら真

if [ -n "$1" ]; then
  echo "version番号が指定されています"
else
  echo "version番号が指定されていません" 
fi

AとBが等しいか

普通に、=が使用できる(2つの文字列が等しい場合は真)

if [ "$1" = $2" ]; then
  echo "$1$2は等しいです"
fi

AとBが等しくないか

!=が使用できる(2つの文字列が等しくない場合は真)

if [ "$1" != $2" ]; then
  echo "$1$2は等しいです"
fi

条件式が成り立たないことをチェックする

Aが空文字ではないことをチェックする

A != ""

if [ "$1" != "" ]; then
  echo "version番号が指定されています"
else
  echo "version番号が指定されていません"
fi

-z "A"

文字列の長さが0の場合は真

Aに値が存在しないことをチェックする

if [ -z "$1" ]; then
  echo "version番号の指定は必須です"
  return
fi

以下でもOK

if [ ! "$1" ]; then
  echo "version番号の指定は必須です"
  return
fi

AND・OR条件

ANDなら&&、ORなら|| が使用できる

if [ $1 ] && [ $2 ]; then
  echo "$1$2の両方が存在します"
fi

まとめ

いかがでしたでしょうか。本記事では、シェルスクリプトの基本であるif分を用いた条件の記述方法について紹介しています。ぜひ参考にしてプログラムを組んでみてください。