Linux便利コマンド : test

うめだ
2024-09-02
2024-09-02
目次

はじめに

みなさま、testコマンドは活用されていますでしょうか。

シェルスクリプトでif文での条件分岐の際、利用することが多いと思います。

日頃のサーバー運用で、設定変更作業等の手作業をシェルスクリプトで自動化すること推進しています。

ただし、いざ書こうとすると、いつも「あれ。。どうやったっけ。」となるので
自身への備忘録の意味も込めて、私がよく使う比較条件を、こちらで紹介させてもらます。

環境

OS : AlmaLinux 8

使い方

私がよく使う比較条件は以下となります。

オプション 条件
STRING1 = STRING2 文字列が等しい
STRING1 != STRING2 文字列が等しくない
INTEGER1 -eq INTEGER2 INTEGER1 は INTEGER2 と等しい
INTEGER1 -ge INTEGER2 INTEGER1 は INTEGER2 以上
INTEGER1 -gt INTEGER2 INTEGER1 は INTEGER2 より大きい
INTEGER1 -le INTEGER2 INTEGER1 は INTEGER2 以下
INTEGER1 -lt INTEGER2 INTEGER1 は INTEGER2 より小さい
INTEGER1 -ne INTEGER2 INTEGER1 は INTEGER2 と等しくない
-d FILE ディレクトリが存在している
-f FILE 通常ファイルが存在している

 

では、実際の使い方を見ていきましょう。

まずは、文字列比較です。

オプション 条件
STRING1 = STRING2 文字列が等しい

$ test hogehoge = fugafuga ; echo $?
1
$

指定した文字列が等しくないので、リターンコードは1となります。

オプション 条件
STRING1 != STRING2 文字列が等しくない

$ test hogehoge != fugafuga ; echo $?
0

$

びっくりマークをつけることで、否定となりますので今回はリターンコードが0となります。

つぎに、数値比較です。

オプション 条件
INTEGER1 -eq INTEGER2 INTEGER1 は INTEGER2 と等しい

 

憶え方は、equal(等しい)です。

$ test 100 -eq 100 ; echo $?
0
$
オプション 条件
INTEGER1 -ge INTEGER2 INTEGER1 は INTEGER2 以上

 

憶え方は、greater equal(より大きく等しい)です。

$ test 200 -ge 100 ; echo $?
0
$

大きい数値なので、リターンコードは0、下記のように等しい数値でも0となります。

$ test 200 -ge 200 ; echo $?
0
$
オプション 条件
INTEGER1 -gt INTEGER2 INTEGER1 は INTEGER2 より大きい

 

憶え方は、greater than(より大きい)です。

$ test 200 -gt 100 ; echo $?
0
$

大きい数値なので、リターンコードは0、下記のように等しい数値の場合は、1となります。

$ test 200 -gt 200 ; echo $?
1
$
オプション 条件
INTEGER1 -le INTEGER2 INTEGER1 は INTEGER2 以下

 

憶え方は、little equal(より小さく等しい)です。

$ test 100 -le 200 ; echo $?
0
$
オプション 条件
INTEGER1 -lt INTEGER2 INTEGER1 は INTEGER2 より小さい

 

憶え方は、little than(より小さい)です。

$ test 200 -lt 200 ; echo $?
1
$

等しい数値の場合は、リターンコードは1となります。

 

オプション 条件
INTEGER1 -ne INTEGER2 INTEGER1 は INTEGER2 と等しくない

 

憶え方は、not equal(等しくない)です。

$ test 100 -ne 200 ; echo $?
0
$

 

最後に、ディレクトリおよびファイルの存在確認です。

ディレクトが存在していない場合は作成する、ファイルが存在している場合は、リネームする等の処理をシェルスクリプトで実行する際、利用しています。

オプション 条件
-d FILE ディレクトリが存在している

$ ls -d work
work
$ test -d work ; echo $?
0
$
オプション 条件
-f FILE 通常ファイルが存在している

$ ls test.txt
test.txt
$ test -f test.txt ; echo $?
0
$

まとめ

いかがでしたか?

紹介した条件以外にも、ファイル比較のオプションが多く用意されています。

ぜひ、testコマンドをぜひ活用してみてください。