This is described in the "man" pages for Shells such as the Posix Shell and Korn Shell.
The single bracket version [ ] is a shorthand version of the unix "test" command and is described in outline terms in the Shell manual and in detail in "man test".
The double bracket version [[ ]] is a Conditional Expression and is described in that section of the Shell manual.
There is much overlap in basic syntax between the two. They have totally different syntax for boolean "and/or" conditions.
In your examples, both of them need mandatory double quotes round the string variable $z. Only the second example gave a syntax error, but both were wrong.
Beware that the "cut" will misbehave if there is one field in the data file but no commas. Try it.
Always put string variables in double quotes and you will have much less trouble with syntax.
Hi guys, I'm trying to run more than one "if" condition at once. What I want is something like
if ] or ] or ]; then
...
I can't remember the syntax for using this or/and set operators. Can someone please assist/ jog my memory?
thanks
Khoom (2 Replies)
This is the code:
while test 1 -eq 1
do
read a
$a
if test $a = stop
then
break
fi
done
I read a command on every loop an execute it.
I check if the string equals the word stop to end the loop,but it say that I gave too many arguments to test.
For example echo hello.
Now the... (1 Reply)
Hi All,
I have 2 variables. Result1 and Result2. I want to put a condition that if Both are True then echo "All True" Else Show Error.
Right now i am doing this and getting error.
if ;
then
echo "All True"
else
echo "Failed"
fi;
Error.
line 8: '
Solution: Looking for (2 Replies)
I really don't know the meaning of these operators. Could someone explain the meanings so I can make my test for today?
<, <=, ==, !=, >=, >,
||, &&, ! ~ , !~
Thanks! (1 Reply)
I do not know the use of the -o -v -R operators.
This is what the info says and I am confused of what optname and varname
mean, are they just normal variable?
-o optname
True if the shell option optname is enabled. See the list of
options under the ... (6 Replies)
Discussion started by: kristinu
6 Replies
LEARN ABOUT PLAN9
test
TEST(1) General Commands Manual TEST(1)NAME
test - set status according to condition
SYNOPSIS
test expr
DESCRIPTION
Test evaluates the expression expr. If the value is true the exit status is null; otherwise the exit status is non-null. If there are no
arguments the exit status is non-null.
The following primitives are used to construct expr.
-r file True if the file exists (is accessible) and is readable.
-w file True if the file exists and is writable.
-x file True if the file exists and has execute permission.
-e file True if the file exists.
-f file True if the file exists and is a plain file.
-d file True if the file exists and is a directory.
-s file True if the file exists and has a size greater than zero.
-t fildes True if the open file whose file descriptor number is fildes (1 by default) is the same file as /dev/cons.
s1 = s2 True if the strings s1 and s2 are identical.
s1 != s2 True if the strings s1 and s2 are not identical.
s1 True if s1 is not the null string. (Deprecated.)
-n s1 True if the length of string s1 is non-zero.
-z s1 True if the length of string s1 is zero.
n1 -eq n2 True if the integers n1 and n2 are arithmetically equal. Any of the comparisons -ne, -gt, -ge, -lt, or -le may be used in place
of -eq. The (nonstandard) construct -l string, meaning the length of string, may be used in place of an integer.
These primaries may be combined with the following operators:
! unary negation operator
-o binary or operator
-a binary and operator; higher precedence than -o
( expr ) parentheses for grouping.
The primitives -b, -u, -g, and -s return false; they are recognized for compatibility with POSIX.
Notice that all the operators and flags are separate arguments to test. Notice also that parentheses and equal signs are meaningful to rc
and must be enclosed in quotes.
EXAMPLES
Test is a dubious way to check for specific character strings: it uses a process to do what an rc(1) match or switch statement can do. The
first example is not only inefficient but wrong, because test understands the purported string "-c" as an option.
if (test $1 '=' "-c") echo OK # wrong!
A better way is
if (~ $1 -c) echo OK
Test whether is in the current directory.
test -f abc -o -d abc
SOURCE
/sys/src/cmd/test.c
SEE ALSO rc(1)TEST(1)