20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【シェルスクリプトBash】 if 文(test文)のオプションまとめ

Last updated at Posted at 2020-03-07

この記事では、《シェルスクリプトのif文(test文)のオプション》について、
業務を通して学習した内容をまとめています。

  • オプション①: 数値の比較
  • オプション②: 文字列の比較
  • オプション③: 文字列長のチェック
  • オプション④: ファイル・ディレクトリのチェック
  • オプション⑤: 実行結果のチェック

こういった内容についてまとめています。

※本記事は、自分で学習したことのまとめ用として書いています。
尚、解説で誤った点があれば、スローして頂ければ喜んでキャッチしますのでお願い致します。

オプション①: 数値の比較

オプション 説明 備考① 備考②
A -eq B AとBが等しければ true equal =
A -ne B AとBが等しくなければ true not equal !=
A -gt B AがBより大なら true greater than >
A -ge B AがB以上なら true greater than or equal >=
A -lt B AがBより小なら true less than <
A -le B AがB以下なら true less than or equal <=

--- 例題 ---

sample.sh
#!/bin/bash

numA=1
numB=1

if [ $numA -eq $numB ]; then
    echo "numA と numB は等しい"
else
    echo "numA と numB は等しくない"
fi

--- 実行結果 ---

$ . sample.sh
numA と numB は等しい

オプション②: 文字列の比較

オプション 説明
A = B AとBが等しければ true
A != B AとBが等しくなければ true

--- 例題 ---

sample.sh
#!/bin/sh

str="hello"

if [ ${str} = "hello" ]; then
    echo "${str}"
    echo "Hello!!!"
elif [ ${str} = "world" ]; then
    echo "${str}"
    echo "World!!!"
else
    echo "Hello World!!!"
fi

--- 実行結果 ---

$ . sample.sh
hello
Hello!!!

オプション③: 文字列長のチェック

オプション 説明
-z A Aの文字列長が 0 なら true
-n A Aの文字列長が 0 より大なら true

--- 例題 ---

sample.sh
#!/bin/bash

str="abcde"

if [ -n "${str}" ]; then
  echo "文字列長は 0 より大きいです!"
else
  echo "文字列長は 0 です!"
fi

--- 実行結果 ---

$ . sample.sh
文字列長は 0 より大きいです!

オプション④: ファイル・ディレクトリのチェック

オプション 説明
-f A Aがファイルなら true
-d A Aがディレクトリなら true
-e A Aが存在するなら true
-s A Aのサイズが 0 より大きければ true
-r A Aが読み取り可能なら true
-w A Aが書き込み可能なら true
-x A Aが実行可能なら true

--- 例題 ---

sample.sh
#!/bin/bash

LOG_FILE="sample.log"

if [ -f ${LOG_FILE} ]; then
  echo "ファイルです!"
else
  echo "ファイルではありません!"
fi

--- 実行結果 ---

$ . sample.sh
ファイルです!

オプション⑤: 実行結果のチェック

オプション 説明
$? 直前のコマンドの実行結果を格納

--- 例題 ---

sample.sh
#!/bin/bash

. dummy.sh  # dummy.shを実行

exit_flag=$? # 実行結果を変数に格納

if [ $exit_flag = 0 ]; then
    echo $exit_flag
    echo "dummy.shは正常終了"
else
    echo $exit_flag
    echo "dummy.shは異常終了"
fi

--- 実行結果 ---

$ . sample.sh
0
dummy.shは正常終了
20
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?