No.010シェル
test
テスト・条件式評価
条件式を評価し、真なら0、偽なら1を返します。シェルスクリプトの分岐やファイル存在確認で使う重要な基本部品です。
答えよく使う形
$ test -f /etc/passwd; printf "%sn" $?
0
$ test -f /etc/passwd
$ [ -d /var/log ]
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
覚える順番の中でLPIC-1・46 駅め / 106
どんなコマンド?
ifやwhileで条件分岐したい時、ファイルの有無や種類を確認したい時、変数が空かどうかを判定したい時、数値の大小比較をしたい時に使います。
testは、文字列比較、数値比較、ファイル存在確認、権限確認などの条件判定を行うためのコマンドです。出力ではなく終了ステータスで結果を返すため、if、while、&&、||と相性が良く、シェルスクリプトの基礎になります。
多くのシェルでは組み込みとして実装され、[ という書き方も同じ系統の機能です。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ test
使用例と実行結果
行を押すとコピーできます。
0
まず安全に試す
3分ミッション
手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。
0 / 1
つまずいたとき
変数が空の時に構文エラーになった
原因引用していないため引数数が崩れています。
こうするtest "$var" = valueのように変数を引用します。
終わったときの数(戻り値)
$ echo $?
- 0条件が真です。
- 1条件が偽です。
- >1構文誤りなどで評価自体に失敗しました。
気をつけることと入れ方
引用不足や空文字の扱いを誤ると条件判定が壊れます。特に変数が空の時や空白を含む時に不具合が起こりやすいため、変数は原則として引用します。
シェル(bash など)に組み込まれたコマンドです。入れるものはありません。
環境による違い
POSIXはtestと[を定義しています。Bashの[[ ... ]]は便利ですが別物です。移植性を求めるスクリプトでは混同しないでください。
確かめた環境Debian GNU/Linux / 13 / Bash 5.2.372026-04-09 に確認
よくある質問
[ とtestは同じですか。
ほぼ同系統ですが、[ は最後に ] を必要とします。
資格試験では
- LinuC レベル1大事1.06 シェルスクリプトLinuCレベル1では、シェルスクリプトの作成、条件判定、入力処理が問われます。testはその基礎部品として重要です。
- LPIC-1大事105.2 簡単なスクリプトをカスタマイズするLPIC-1では、単純なシェルスクリプトの分岐と入力処理が出題対象です。testはその基本構成要素です。
- 共通基礎大事Linuxコマンド基礎
test を最後まで読みました。
Linux コマンド辞典に戻る118 / 144