.\" Copyright (c) 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Institute of Electrical and Electronics Engineers, Inc. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)test.1 8.1 (Berkeley) 5/31/93 .\" %FreeBSD: src/bin/test/test.1,v 1.22 2004/07/03 01:49:17 tjr Exp % .\" .\" $FreeBSD$ .\" .Dd July 3, 2004 .Dt TEST 1 .Os .Sh 名称 .Nm test , .Nm \&[ .Nd 条件式評価ユーティリティ .Sh 書式 .Nm .Ar expression .Nm \&[ .Ar expression Cm ] .Sh 解説 .Nm ユーティリティは、式を評価し、結果が真なら 0 (true) を、 偽なら 1 (false) を戻り値として返します。 引数の式がない場合も 1 (false) を返します。 .Pp 演算子やフラグなどは、一つ一つ独立な引数として .Nm ユーティリティに渡します。 .Pp 式は以下の基本要素から構成されます: .Bl -tag -width Ar .It Fl b Ar file .Ar file が存在し、それがブロック特殊ファイルであるならば真になります。 .It Fl c Ar file .Ar file が存在し、それがキャラクタ特殊ファイルであるならば真になります。 .It Fl d Ar file .Ar file が存在し、それがディレクトリであるならば真になります。 .It Fl e Ar file .Ar file が存在すれば真になります (ファイルの種類に依りません)。 .It Fl f Ar file .Ar file が存在し、それが通常ファイルであるならば真になります。 .It Fl g Ar file .Ar file が存在し、それに setgid フラグが立っていれば真になります。 .It Fl h Ar file .Ar file が存在し、それがシンボリックリンクであるならば真になります。 この演算子は、本プログラムの以前のバージョンとの互換性のためにあります。 この演算子があることに依存しないようにしてください。 代りに .Fl L を使用してください。 .It Fl k Ar file .Ar file が存在し、それにスティッキビットが立っていれば真になります。 .It Fl n Ar string .Ar string の長さが 0 でなければ真になります。 .It Fl p Ar file .Ar file が名前つきパイプ .Pq Tn FIFO であるならば真になります。 .It Fl r Ar file .Ar file が存在し、それが読み込み可能であれば真になります。 .It Fl s Ar file .Ar file が存在し、そのファイルサイズが 0 より大きければ真になります。 .It Fl t Ar file_descriptor ファイル記述子番号が .Ar file_descriptor であるファイルがオープンされており、これが端末に 結びつけられていれば 真になります。 .It Fl u Ar file .Ar file が存在し、それに setuid フラグが立っていれば真になります。 .It Fl w Ar file .Ar file が存在し、書き込み可能であれば真になります。 真ということは、 書き込み可能フラグが立っていることを表すに過ぎません。 ファイルが読み込み専用のファイルシステム上にあると、たとえ この判定が真であっても書き込みはできません。 .It Fl x Ar file .Ar file が存在し、実行可能であれば真になります。 真ということは、 実行可能フラグが立っていることを表すに過ぎません。 .Ar file がディレクトリの場合、真は .Ar file が検索可能であることを表します。 .It Fl z Ar string .Ar string の長さが 0 であれば真になります。 .It Fl L Ar file .Ar file が存在し、シンボリックリンクの場合に真になります。 .It Fl O Ar file .Ar file が存在し、 その所有者と本プロセスの実効ユーザ ID とがマッチする場合に真になります。 .It Fl G Ar file .Ar file が存在し、 そのグループと本プロセスの実効グループ ID とがマッチする場合に真になります。 .It Fl S Ar file .Ar file が存在し、ソケットの場合に真になります。 .It Ar file1 Fl nt Ar file2 .Ar file1 が存在し、 .Ar file2 よりも新しい場合に真になります。 .It Ar file1 Fl ot Ar file2 .Ar file1 が存在し、 .Ar file2 よりも古い場合に真になります。 .It Ar file1 Fl ef Ar file2 .Ar file1 と .Ar file2 が存在し、これらが同一のファイルを参照する場合に真になります。 .It Ar string .Ar string が空文字列でなければ真になります。 .It Ar \&s\&1 Cm \&= Ar \&s\&2 文字列 .Ar \&s\&1 と .Ar \&s\&2 が同一であれば真になります。 .It Ar \&s\&1 Cm \&!= Ar \&s\&2 文字列 .Ar \&s\&1 と .Ar \&s\&2 が同一でなければ真になります。 .It Ar \&s\&1 Cm \&< Ar \&s\&2 文字列 .Ar \&s\&1 が文字列 .Ar \&s\&2 に対し、文字のバイナリ順において前に来る場合に真になります。 .It Ar \&s\&1 Cm \&> Ar \&s\&2 文字列 .Ar \&s\&1 が文字列 .Ar \&s\&2 に対し、文字のバイナリ順において後に来る場合に真になります。 .It Ar \&n\&1 Fl \&eq Ar \&n\&2 整数 .Ar \&n\&1 と .Ar \&n\&2 が等しければ真になります。 .It Ar \&n\&1 Fl \&ne Ar \&n\&2 整数 .Ar \&n\&1 と .Ar \&n\&2 が等しくなければ真になります。 .It Ar \&n\&1 Fl \> Ar \&n\&2 整数 .Ar \&n\&1 が .Ar \&n\&2 がより大きければ真になります。 .It Ar \&n\&1 Fl \&ge Ar \&n\&2 整数 .Ar \&n\&1 が .Ar \&n\&2 より大きいか等しければ真になります。 .It Ar \&n\&1 Fl \< Ar \&n\&2 整数 .Ar \&n\&1 が .Ar \&n\&2 より小さければ真になります。 .It Ar \&n\&1 Fl \&le Ar \&n\&2 整数 .Ar \&n\&1 が .Ar \&n\&2 より小さいか等しければ真になります。 .El .Pp .Ar file がシンボリックリンクの場合、 基本要素 .Fl h と .Fl L の場合を除き、 .Nm は参照を手繰りファイルを得て、それに対して式を評価します。 .Pp これらの基本要素は以下の演算子と組み合わせることができます: .Bl -tag -width Ar .It Cm \&! Ar expression .Ar expression が偽ならば真になります。 .It Ar expression1 Fl a Ar expression2 .Ar expression1 と .Ar expression2 の両方が真ならば真になります。 .It Ar expression1 Fl o Ar expression2 .Ar expression1 と .Ar expression2 のどちらかが真ならば真になります。 .It Cm \&( Ns Ar expression Ns Cm \&) .Ar expression が真ならば真になります。 .El .Pp .Fl a 演算子は .Fl o 演算子より優先されます。 .Pp シェルによっては、本ユーティリティと同一の、組み込みの .Nm コマンドを提供しています。 .Xr builtin 1 マニュアルページを参照してください。 .Sh 文法の曖昧性 .Nm に使用されている文法は本質的に曖昧です。 ある程度の一貫性を確保するため、 .St -p1003.2 の D11.2/4.62.4 節で述べられているケースに関しては、この標準化文書が 規定する規則に一貫して従った評価が行われます。 しかしその他のケースでは、コマンドの持つ意味の曖昧さに左右されます。 .Sh 戻り値 .Nm ユーティリティは次のいずれかの値を返します。 .Bl -tag -width Ds .It 0 式を評価した結果が真である .It 1 式を評価した結果が偽であるか、式がない .It >1 エラーが発生した .El .Sh 関連項目 .Xr builtin 1 , .Xr expr 1 , .Xr sh 1 , .Xr symlink 7 .Sh 規格 .Nm ユーティリティは、 .St -p1003.2 仕様の上位互換実装です。