はじめに
みなさま、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コマンドをぜひ活用してみてください。