シェルの一般的な条件テスト
参照および参照用にシェルで一般的に使用される条件テストテーブルを次に示します。
さまざまなテストタイプ
Bashで実行できるテストには次の3つのタイプがあります。
- テスト文字列
- テスト番号
- テストファイル
テスト文字列
状態 | 意義 |
---|---|
$ string1 = $ string2 | 2つの文字列が等しいかどうか。シェルでは大文字と小文字が区別されるため、Aとaは同じではありません。 |
$ string1!= $ string2 | 2つの文字列が異なるかどうか。 |
-z $ string | 文字列文字列が空かどうか。zはゼロの最初の文字で、英語で「ゼロ」を意味します。 |
-n $ string | 文字列が空でないかどうか。nは英語の最初の文字ではありません。これは英語で「not」を意味します。 |
例:
#!/bin/bash
if [ -z $1 ]
then
echo "No parameter"
else
echo "There is at least one parameter"
fi
テスト文字列
状態 | 意義 |
---|---|
$ num1 -eq $ num2 | 2つの数値が等しいかどうか。これは、文字列を決定するために使用される記号(=)と同じではありません。eqはequalの略語で、英語で「等しい」を意味します。 |
$ num1 -ne $ num2 | 2つの数字が異なるかどうか。neはnotequalの略語で、英語で「等しくない」を意味します。 |
$ num1 -lt $ num2 | 数値num1がnum2より小さいかどうか。ltはlowerthanの略語で、英語で「lessthan」を意味します。 |
$ num1 -le $ num2 | 数値num1がnum2以下であるかどうか。leは、lower or equalの略語で、英語で「以下」を意味します。 |
$ num1 -gt $ num2 | 数値num1がnum2より大きいかどうか。gtはgreaterの略語で、英語で「より大きい」を意味します。 |
$ num1 -ge $ num2 | 数値num1がnum2以上であるかどうか。Geは、英語で「以上」を意味する「より大きい」または「等しい」の略語です。 |
例:
#!/bin/bash
if [ $1 -ge 10 ]
then
echo "You have entered a number greater than 10 or equal to 10"
else
echo "You have entered a number lower than 10"
fi
テストファイル
状態 | 意義 |
---|---|
-e $ファイル | ファイルが存在するかどうか。eはexistの最初の文字で、「exist」を意味します。 |
-d $ file | ファイルがディレクトリかどうか。Linuxのすべてがファイルであるため、ディレクトリも一種のファイルです。dはディレクトリの最初の文字で、「ディレクトリ」を意味します。 |
-f $ file | ファイルがファイルかどうか。fはファイルの最初の文字で、「ファイル」を意味します。 |
-L $ file | ファイルがシンボリックリンクファイルであるかどうか。Lはリンクの最初の文字で、「リンク」を意味します。 |
-r $ file | ファイルが読み取り可能かどうか。rは読み取り可能な最初の文字で、「読み取り可能」を意味します。 |
-w $ file | ファイルが書き込み可能かどうか。wは書き込み可能の最初の文字で、「書き込み可能」を意味します。 |
-x $ file | ファイルが実行可能かどうか。xは実行可能ファイルの最初の文字で、「実行可能」を意味します。 |
$ file1 -nt $ file2 | ファイルfile1がfile2よりも新しいかどうか。ntは、newer thanの略語で、「新しい」を意味します。 |
$ file1- $ file2から | ファイルfile1がfile2より古いかどうか。otは、older thanの略語で、「古い」を意味します。 |
例:
#!/bin/bash
read -p 'Enter a directory : ' file
if [ -d $file ]
then
echo "$file is a directory"
else
echo "$file is not a directory"
fi
—————————————————————————————————————————————————
参照:Linuxコマンドラインとシェルスクリプトプログラミング百科事典/ 43条件が出たとき、シェルは満たされていません