14b88c807SRodney W. Grimes.\" Copyright (c) 1991, 1993 24b88c807SRodney W. Grimes.\" The Regents of the University of California. All rights reserved. 34b88c807SRodney W. Grimes.\" 44b88c807SRodney W. Grimes.\" This code is derived from software contributed to Berkeley by 54b88c807SRodney W. Grimes.\" the Institute of Electrical and Electronics Engineers, Inc. 64b88c807SRodney W. Grimes.\" 74b88c807SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without 84b88c807SRodney W. Grimes.\" modification, are permitted provided that the following conditions 94b88c807SRodney W. Grimes.\" are met: 104b88c807SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright 114b88c807SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer. 124b88c807SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright 134b88c807SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer in the 144b88c807SRodney W. Grimes.\" documentation and/or other materials provided with the distribution. 154b88c807SRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors 164b88c807SRodney W. Grimes.\" may be used to endorse or promote products derived from this software 174b88c807SRodney W. Grimes.\" without specific prior written permission. 184b88c807SRodney W. Grimes.\" 194b88c807SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 204b88c807SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 214b88c807SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 224b88c807SRodney W. Grimes.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 234b88c807SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 244b88c807SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 254b88c807SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 264b88c807SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 274b88c807SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 284b88c807SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 294b88c807SRodney W. Grimes.\" SUCH DAMAGE. 304b88c807SRodney W. Grimes.\" 314b88c807SRodney W. Grimes.\" @(#)test.1 8.1 (Berkeley) 5/31/93 322a456239SPeter Wemm.\" $FreeBSD$ 334b88c807SRodney W. Grimes.\" 34ee70653eSTim J. Robbins.Dd July 3, 2004 354b88c807SRodney W. Grimes.Dt TEST 1 364b88c807SRodney W. Grimes.Os 374b88c807SRodney W. Grimes.Sh NAME 38717a08b6SSheldon Hearn.Nm test , 39717a08b6SSheldon Hearn.Nm \&[ 404b88c807SRodney W. Grimes.Nd condition evaluation utility 414b88c807SRodney W. Grimes.Sh SYNOPSIS 42be8b1497SRuslan Ermilov.Nm 434b88c807SRodney W. Grimes.Ar expression 44238fe5f7SRuslan Ermilov.Nm \&[ 45717a08b6SSheldon Hearn.Ar expression Cm ] 464b88c807SRodney W. Grimes.Sh DESCRIPTION 474b88c807SRodney W. GrimesThe 48be8b1497SRuslan Ermilov.Nm 494b88c807SRodney W. Grimesutility evaluates the expression and, if it evaluates 504b88c807SRodney W. Grimesto true, returns a zero (true) exit status; otherwise 514b88c807SRodney W. Grimesit returns 1 (false). 524b88c807SRodney W. GrimesIf there is no expression, test also 534b88c807SRodney W. Grimesreturns 1 (false). 544b88c807SRodney W. Grimes.Pp 554b88c807SRodney W. GrimesAll operators and flags are separate arguments to the 56be8b1497SRuslan Ermilov.Nm 574b88c807SRodney W. Grimesutility. 584b88c807SRodney W. Grimes.Pp 594b88c807SRodney W. GrimesThe following primaries are used to construct expression: 60717a08b6SSheldon Hearn.Bl -tag -width Ar 614b88c807SRodney W. Grimes.It Fl b Ar file 624b88c807SRodney W. GrimesTrue if 634b88c807SRodney W. Grimes.Ar file 644b88c807SRodney W. Grimesexists and is a block special 654b88c807SRodney W. Grimesfile. 664b88c807SRodney W. Grimes.It Fl c Ar file 674b88c807SRodney W. GrimesTrue if 684b88c807SRodney W. Grimes.Ar file 694b88c807SRodney W. Grimesexists and is a character 704b88c807SRodney W. Grimesspecial file. 714b88c807SRodney W. Grimes.It Fl d Ar file 724b88c807SRodney W. GrimesTrue if 734b88c807SRodney W. Grimes.Ar file 744b88c807SRodney W. Grimesexists and is a directory. 754b88c807SRodney W. Grimes.It Fl e Ar file 764b88c807SRodney W. GrimesTrue if 774b88c807SRodney W. Grimes.Ar file 784b88c807SRodney W. Grimesexists (regardless of type). 794b88c807SRodney W. Grimes.It Fl f Ar file 804b88c807SRodney W. GrimesTrue if 814b88c807SRodney W. Grimes.Ar file 824b88c807SRodney W. Grimesexists and is a regular file. 834b88c807SRodney W. Grimes.It Fl g Ar file 844b88c807SRodney W. GrimesTrue if 854b88c807SRodney W. Grimes.Ar file 864b88c807SRodney W. Grimesexists and its set group ID flag 874b88c807SRodney W. Grimesis set. 884b88c807SRodney W. Grimes.It Fl h Ar file 894b88c807SRodney W. GrimesTrue if 904b88c807SRodney W. Grimes.Ar file 914b88c807SRodney W. Grimesexists and is a symbolic link. 92717a08b6SSheldon HearnThis operator is retained for compatibility with previous versions of 93bef84d6bSSheldon Hearnthis program. 94bef84d6bSSheldon HearnDo not rely on its existence; use 95717a08b6SSheldon Hearn.Fl L 96717a08b6SSheldon Hearninstead. 97717a08b6SSheldon Hearn.It Fl k Ar file 98717a08b6SSheldon HearnTrue if 99717a08b6SSheldon Hearn.Ar file 100717a08b6SSheldon Hearnexists and its sticky bit is set. 1014b88c807SRodney W. Grimes.It Fl n Ar string 1024b88c807SRodney W. GrimesTrue if the length of 1034b88c807SRodney W. Grimes.Ar string 1044b88c807SRodney W. Grimesis nonzero. 1054b88c807SRodney W. Grimes.It Fl p Ar file 1064b88c807SRodney W. GrimesTrue if 1074b88c807SRodney W. Grimes.Ar file 1084b88c807SRodney W. Grimesis a named pipe 109c4d9468eSRuslan Ermilov.Pq Tn FIFO . 1104b88c807SRodney W. Grimes.It Fl r Ar file 1114b88c807SRodney W. GrimesTrue if 112c263cc21SPhilippe Charnier.Ar file 113c263cc21SPhilippe Charnierexists and is readable. 1144b88c807SRodney W. Grimes.It Fl s Ar file 1154b88c807SRodney W. GrimesTrue if 1164b88c807SRodney W. Grimes.Ar file 1174b88c807SRodney W. Grimesexists and has a size greater 1184b88c807SRodney W. Grimesthan zero. 11946c128b5SDima Dorfman.It Fl t Ar file_descriptor 1204b88c807SRodney W. GrimesTrue if the file whose file descriptor number 1214b88c807SRodney W. Grimesis 1224b88c807SRodney W. Grimes.Ar file_descriptor 123717a08b6SSheldon Hearnis open and is associated with a terminal. 1244b88c807SRodney W. Grimes.It Fl u Ar file 1254b88c807SRodney W. GrimesTrue if 1264b88c807SRodney W. Grimes.Ar file 1274b88c807SRodney W. Grimesexists and its set user ID flag 1284b88c807SRodney W. Grimesis set. 1294b88c807SRodney W. Grimes.It Fl w Ar file 1304b88c807SRodney W. GrimesTrue if 1314b88c807SRodney W. Grimes.Ar file 1324b88c807SRodney W. Grimesexists and is writable. 1334b88c807SRodney W. GrimesTrue 1344b88c807SRodney W. Grimesindicates only that the write flag is on. 1354b88c807SRodney W. GrimesThe file is not writable on a read-only file 1364b88c807SRodney W. Grimessystem even if this test indicates true. 1374b88c807SRodney W. Grimes.It Fl x Ar file 1384b88c807SRodney W. GrimesTrue if 1394b88c807SRodney W. Grimes.Ar file 1404b88c807SRodney W. Grimesexists and is executable. 1414b88c807SRodney W. GrimesTrue 1424b88c807SRodney W. Grimesindicates only that the execute flag is on. 1434b88c807SRodney W. GrimesIf 1444b88c807SRodney W. Grimes.Ar file 1454b88c807SRodney W. Grimesis a directory, true indicates that 1464b88c807SRodney W. Grimes.Ar file 1474b88c807SRodney W. Grimescan be searched. 1484b88c807SRodney W. Grimes.It Fl z Ar string 1494b88c807SRodney W. GrimesTrue if the length of 1504b88c807SRodney W. Grimes.Ar string 1514b88c807SRodney W. Grimesis zero. 152717a08b6SSheldon Hearn.It Fl L Ar file 153717a08b6SSheldon HearnTrue if 154717a08b6SSheldon Hearn.Ar file 155717a08b6SSheldon Hearnexists and is a symbolic link. 156717a08b6SSheldon Hearn.It Fl O Ar file 157717a08b6SSheldon HearnTrue if 158717a08b6SSheldon Hearn.Ar file 159717a08b6SSheldon Hearnexists and its owner matches the effective user id of this process. 160717a08b6SSheldon Hearn.It Fl G Ar file 161717a08b6SSheldon HearnTrue if 162717a08b6SSheldon Hearn.Ar file 163717a08b6SSheldon Hearnexists and its group matches the effective group id of this process. 164717a08b6SSheldon Hearn.It Fl S Ar file 165717a08b6SSheldon HearnTrue if 166717a08b6SSheldon Hearn.Ar file 167717a08b6SSheldon Hearnexists and is a socket. 168717a08b6SSheldon Hearn.It Ar file1 Fl nt Ar file2 169717a08b6SSheldon HearnTrue if 170717a08b6SSheldon Hearn.Ar file1 171717a08b6SSheldon Hearnexists and is newer than 172717a08b6SSheldon Hearn.Ar file2 . 173717a08b6SSheldon Hearn.It Ar file1 Fl ot Ar file2 174717a08b6SSheldon HearnTrue if 175717a08b6SSheldon Hearn.Ar file1 176717a08b6SSheldon Hearnexists and is older than 177717a08b6SSheldon Hearn.Ar file2 . 178717a08b6SSheldon Hearn.It Ar file1 Fl ef Ar file2 179717a08b6SSheldon HearnTrue if 180717a08b6SSheldon Hearn.Ar file1 181717a08b6SSheldon Hearnand 182717a08b6SSheldon Hearn.Ar file2 183717a08b6SSheldon Hearnexist and refer to the same file. 1844b88c807SRodney W. Grimes.It Ar string 1854b88c807SRodney W. GrimesTrue if 1864b88c807SRodney W. Grimes.Ar string 1874b88c807SRodney W. Grimesis not the null 1884b88c807SRodney W. Grimesstring. 1894b88c807SRodney W. Grimes.It Ar \&s\&1 Cm \&= Ar \&s\&2 1904b88c807SRodney W. GrimesTrue if the strings 1914b88c807SRodney W. Grimes.Ar \&s\&1 1924b88c807SRodney W. Grimesand 1934b88c807SRodney W. Grimes.Ar \&s\&2 1944b88c807SRodney W. Grimesare identical. 1954b88c807SRodney W. Grimes.It Ar \&s\&1 Cm \&!= Ar \&s\&2 1964b88c807SRodney W. GrimesTrue if the strings 1974b88c807SRodney W. Grimes.Ar \&s\&1 1984b88c807SRodney W. Grimesand 1994b88c807SRodney W. Grimes.Ar \&s\&2 2004b88c807SRodney W. Grimesare not identical. 201717a08b6SSheldon Hearn.It Ar \&s\&1 Cm \&< Ar \&s\&2 202717a08b6SSheldon HearnTrue if string 203717a08b6SSheldon Hearn.Ar \&s\&1 204717a08b6SSheldon Hearncomes before 205717a08b6SSheldon Hearn.Ar \&s\&2 206ee70653eSTim J. Robbinsbased on the binary value of their characters. 207717a08b6SSheldon Hearn.It Ar \&s\&1 Cm \&> Ar \&s\&2 208717a08b6SSheldon HearnTrue if string 209717a08b6SSheldon Hearn.Ar \&s\&1 210717a08b6SSheldon Hearncomes after 211717a08b6SSheldon Hearn.Ar \&s\&2 212ee70653eSTim J. Robbinsbased on the binary value of their characters. 2134b88c807SRodney W. Grimes.It Ar \&n\&1 Fl \&eq Ar \&n\&2 2144b88c807SRodney W. GrimesTrue if the integers 2154b88c807SRodney W. Grimes.Ar \&n\&1 2164b88c807SRodney W. Grimesand 2174b88c807SRodney W. Grimes.Ar \&n\&2 2184b88c807SRodney W. Grimesare algebraically 2194b88c807SRodney W. Grimesequal. 2204b88c807SRodney W. Grimes.It Ar \&n\&1 Fl \&ne Ar \&n\&2 2214b88c807SRodney W. GrimesTrue if the integers 2224b88c807SRodney W. Grimes.Ar \&n\&1 2234b88c807SRodney W. Grimesand 2244b88c807SRodney W. Grimes.Ar \&n\&2 2254b88c807SRodney W. Grimesare not 2264b88c807SRodney W. Grimesalgebraically equal. 2274b88c807SRodney W. Grimes.It Ar \&n\&1 Fl \> Ar \&n\&2 2284b88c807SRodney W. GrimesTrue if the integer 2294b88c807SRodney W. Grimes.Ar \&n\&1 2304b88c807SRodney W. Grimesis algebraically 2314b88c807SRodney W. Grimesgreater than the integer 2324b88c807SRodney W. Grimes.Ar \&n\&2 . 2334b88c807SRodney W. Grimes.It Ar \&n\&1 Fl \&ge Ar \&n\&2 2344b88c807SRodney W. GrimesTrue if the integer 2354b88c807SRodney W. Grimes.Ar \&n\&1 2364b88c807SRodney W. Grimesis algebraically 2374b88c807SRodney W. Grimesgreater than or equal to the integer 2384b88c807SRodney W. Grimes.Ar \&n\&2 . 2394b88c807SRodney W. Grimes.It Ar \&n\&1 Fl \< Ar \&n\&2 2404b88c807SRodney W. GrimesTrue if the integer 2414b88c807SRodney W. Grimes.Ar \&n\&1 2424b88c807SRodney W. Grimesis algebraically less 2434b88c807SRodney W. Grimesthan the integer 2444b88c807SRodney W. Grimes.Ar \&n\&2 . 2454b88c807SRodney W. Grimes.It Ar \&n\&1 Fl \&le Ar \&n\&2 2464b88c807SRodney W. GrimesTrue if the integer 2474b88c807SRodney W. Grimes.Ar \&n\&1 2484b88c807SRodney W. Grimesis algebraically less 2494b88c807SRodney W. Grimesthan or equal to the integer 2504b88c807SRodney W. Grimes.Ar \&n\&2 . 2514b88c807SRodney W. Grimes.El 2524b88c807SRodney W. Grimes.Pp 253593cc6f3SYaroslav TykhiyIf 254593cc6f3SYaroslav Tykhiy.Ar file 255593cc6f3SYaroslav Tykhiyis a symbolic link, 256593cc6f3SYaroslav Tykhiy.Nm 257593cc6f3SYaroslav Tykhiywill fully dereference it and then evaluate the expression 258593cc6f3SYaroslav Tykhiyagainst the file referenced, except for the 259593cc6f3SYaroslav Tykhiy.Fl h 260593cc6f3SYaroslav Tykhiyand 261593cc6f3SYaroslav Tykhiy.Fl L 262593cc6f3SYaroslav Tykhiyprimaries. 263593cc6f3SYaroslav Tykhiy.Pp 2644b88c807SRodney W. GrimesThese primaries can be combined with the following operators: 2654b88c807SRodney W. Grimes.Bl -tag -width Ar 2664b88c807SRodney W. Grimes.It Cm \&! Ar expression 2674b88c807SRodney W. GrimesTrue if 2684b88c807SRodney W. Grimes.Ar expression 2694b88c807SRodney W. Grimesis false. 2704b88c807SRodney W. Grimes.It Ar expression1 Fl a Ar expression2 2714b88c807SRodney W. GrimesTrue if both 2724b88c807SRodney W. Grimes.Ar expression1 2734b88c807SRodney W. Grimesand 2744b88c807SRodney W. Grimes.Ar expression2 2754b88c807SRodney W. Grimesare true. 2764b88c807SRodney W. Grimes.It Ar expression1 Fl o Ar expression2 2774b88c807SRodney W. GrimesTrue if either 2784b88c807SRodney W. Grimes.Ar expression1 2794b88c807SRodney W. Grimesor 2804b88c807SRodney W. Grimes.Ar expression2 2814b88c807SRodney W. Grimesare true. 2824b88c807SRodney W. Grimes.It Cm \&( Ns Ar expression Ns Cm \&) 2834b88c807SRodney W. GrimesTrue if expression is true. 2844b88c807SRodney W. Grimes.El 2854b88c807SRodney W. Grimes.Pp 2864b88c807SRodney W. GrimesThe 2874b88c807SRodney W. Grimes.Fl a 2884b88c807SRodney W. Grimesoperator has higher precedence than the 2894b88c807SRodney W. Grimes.Fl o 2904b88c807SRodney W. Grimesoperator. 291d90c5c4aSAkinori MUSHA.Pp 292d90c5c4aSAkinori MUSHASome shells may provide a builtin 293d90c5c4aSAkinori MUSHA.Nm 294d90c5c4aSAkinori MUSHAcommand which is similar or identical to this utility. 295d90c5c4aSAkinori MUSHAConsult the 296d90c5c4aSAkinori MUSHA.Xr builtin 1 297d90c5c4aSAkinori MUSHAmanual page. 2984b88c807SRodney W. Grimes.Sh GRAMMAR AMBIGUITY 2994b88c807SRodney W. GrimesThe 300be8b1497SRuslan Ermilov.Nm 301eccea571SRuslan Ermilovgrammar is inherently ambiguous. 302eccea571SRuslan ErmilovIn order to assure a degree of consistency, 3034b88c807SRodney W. Grimesthe cases described in the 3044b88c807SRodney W. Grimes.St -p1003.2 , 3054b88c807SRodney W. Grimessection D11.2/4.62.4, standard 3064b88c807SRodney W. Grimesare evaluated consistently according to the rules specified in the 307eccea571SRuslan Ermilovstandards document. 308eccea571SRuslan ErmilovAll other cases are subject to the ambiguity in the 3094b88c807SRodney W. Grimescommand semantics. 3104b88c807SRodney W. Grimes.Sh RETURN VALUES 3114b88c807SRodney W. GrimesThe 312be8b1497SRuslan Ermilov.Nm 3134b88c807SRodney W. Grimesutility exits with one of the following values: 3144b88c807SRodney W. Grimes.Bl -tag -width Ds 3154b88c807SRodney W. Grimes.It 0 3164b88c807SRodney W. Grimesexpression evaluated to true. 3174b88c807SRodney W. Grimes.It 1 3184b88c807SRodney W. Grimesexpression evaluated to false or expression was 3194b88c807SRodney W. Grimesmissing. 3204b88c807SRodney W. Grimes.It >1 3214b88c807SRodney W. GrimesAn error occurred. 3224b88c807SRodney W. Grimes.El 323e5bf7bf4SJoseph Koshy.Sh SEE ALSO 324d90c5c4aSAkinori MUSHA.Xr builtin 1 , 325e5bf7bf4SJoseph Koshy.Xr expr 1 , 326593cc6f3SYaroslav Tykhiy.Xr sh 1 , 327593cc6f3SYaroslav Tykhiy.Xr symlink 7 3284b88c807SRodney W. Grimes.Sh STANDARDS 3294b88c807SRodney W. GrimesThe 330be8b1497SRuslan Ermilov.Nm 331717a08b6SSheldon Hearnutility implements a superset of the 3324b88c807SRodney W. Grimes.St -p1003.2 333717a08b6SSheldon Hearnspecification. 334