【Linux】ファイルの有無や数値・文字列を比較する:test

Linux

どーも!marusukeです!

ファイルの有無や属性、数値・文字列を比較するコマンドtestについて説明します!

testコマンドでできること

test <条件式>

testコマンドは、数値や文字列、ファイルの属性を評価し、条件に応じて終了ステータスを返すコマンドです。シェルスクリプト内で条件分岐を行う際に使用され、条件が成立すると0、成立しない場合には1の終了ステータスを返します。if文と組み合わせることで、さまざまな条件分岐を実現できます

主な機能

  1. 数値の比較: 2つの数値が等しいかどうか、大きいかどうかなどを判定します
  2. 文字列の比較: 2つの文字列が等しいかどうか、空かどうかなどを判定します
  3. ファイルの属性確認: ファイルが存在するか、読み取りや書き込み権限があるかどうかなどを確認します

testコマンドの使用例

1. 数値の比較

数値の比較には、以下のオプションを使用します

a=10
b=20

if test "$a" -lt "$b"; then
    echo "$a is less than $b"
fi
  • -ltは「less than(より小さい)」を意味します。この例では、変数abより小さい場合にメッセージを出力します

2. 文字列の比較

文字列の比較には、以下のオプションを使用します

str1="hello"
str2="world"

if test "$str1" != "$str2"; then
    echo "The strings are different"
fi
  • !=は文字列が異なることを意味します。この例では、str1str2が異なる場合にメッセージを出力します

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コマンドは、シェルスクリプト内で条件をチェックする際に非常に便利です

数値や文字列の比較、ファイルの属性確認など、さまざまな条件分岐を簡単に記述できます

省略形の角括弧[]も可読性を高めるために使用されています

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました