どーも!marusukeです!
ファイルの有無や属性、数値・文字列を比較するコマンドtest
について説明します!
testコマンドでできること
test <条件式>
test
コマンドは、数値や文字列、ファイルの属性を評価し、条件に応じて終了ステータスを返すコマンドです。シェルスクリプト内で条件分岐を行う際に使用され、条件が成立すると0
、成立しない場合には1
の終了ステータスを返します。if
文と組み合わせることで、さまざまな条件分岐を実現できます
主な機能
- 数値の比較: 2つの数値が等しいかどうか、大きいかどうかなどを判定します
- 文字列の比較: 2つの文字列が等しいかどうか、空かどうかなどを判定します
- ファイルの属性確認: ファイルが存在するか、読み取りや書き込み権限があるかどうかなどを確認します
testコマンドの使用例
1. 数値の比較
数値の比較には、以下のオプションを使用します
a=10
b=20
if test "$a" -lt "$b"; then
echo "$a is less than $b"
fi
-lt
は「less than(より小さい)」を意味します。この例では、変数a
がb
より小さい場合にメッセージを出力します
2. 文字列の比較
文字列の比較には、以下のオプションを使用します
str1="hello"
str2="world"
if test "$str1" != "$str2"; then
echo "The strings are different"
fi
!=
は文字列が異なることを意味します。この例では、str1
とstr2
が異なる場合にメッセージを出力します
3. ファイルの属性確認
ファイルが存在するか、読み取り可能かどうかなどの確認を行います
file="example.txt"
if test -e "$file"; then
echo "$file exists"
else
echo "$file does not exist"
fi
-e
はファイルが存在することを確認するオプションです。この例では、example.txt
が存在する場合にメッセージを出力します
主なオプション
数値の比較
オプション | 説明 |
---|---|
-eq | 等しい |
-ne | 等しくない |
-gt | より大きい |
-ge | より大きいか等しい |
-lt | より小さい |
-le | より小さいか等しい |
文字列の比較
オプション | 説明 |
---|---|
= | 等しい |
!= | 等しくない |
-z | 文字列が空である |
-n | 文字列が空でない |
ファイルの属性確認
オプション | 説明 |
---|---|
-e | ファイルが存在する |
-f | 通常のファイルである |
-d | ディレクトリである |
-r | 読み取り可能である |
-w | 書き込み可能である |
-x | 実行可能である |
例: ディレクトリが存在するか確認する
dir="my_directory"
if test -d "$dir"; then
echo "$dir is a directory"
else
echo "$dir does not exist or is not a directory"
fi
この例では、変数dir
がディレクトリであるかを確認します
testコマンドの省略形 [ ]
test
コマンドは角括弧([
と ]
)で省略できます。例えば、次のように記述できます
if [ "$a" -lt "$b" ]; then
echo "$a is less than $b"
fi
※[
の右側と]
の左側にはスペースが必要です
可読性を高めるために[]
を利用することのほうが多いようです
まとめ
test
コマンドは、シェルスクリプト内で条件をチェックする際に非常に便利です
数値や文字列の比較、ファイルの属性確認など、さまざまな条件分岐を簡単に記述できます
省略形の角括弧[]
も可読性を高めるために使用されています
以上です!
ここまで読んでいただきありがとうございました!
コメント