Linux man test
先来看看Linux下对test的解释(使用man test或者info test)
[plain]
TEST(1) FSF TEST(1)
NAME
test - check file types and compare values
SYNOPSIS
test EXPRESSION
[ EXPRESSION ]
test OPTION
DESCRIPTION
Exit with the status determined by EXPRESSION.
--help display this help and exit
--version
output version information and exit
EXPRESSION is true or false and sets exit status. It is one of:
( EXPRESSION )
EXPRESSION is true
! EXPRESSION
EXPRESSION is false
EXPRESSION1 -a EXPRESSION2
EXPRESSION1 -o EXPRESSION2
either EXPRESSION1 or EXPRESSION2 is true
[-n] STRING
the length of STRING is nonzero
-z STRING
the length of STRING is zero
STRING1 = STRING2
the strings are equal
STRING1 != STRING2
the strings are not equal
INTEGER1 -eq INTEGER2
INTEGER1 is equal to INTEGER2
INTEGER1 -ge INTEGER2
INTEGER1 is greater than or equal to INTEGER2
INTEGER1 -gt INTEGER2
INTEGER1 is greater than INTEGER2
INTEGER1 -le INTEGER2
INTEGER1 is less than or equal to INTEGER2
INTEGER1 -lt INTEGER2
INTEGER1 is less than INTEGER2
INTEGER1 -ne INTEGER2
INTEGER1 is not equal to INTEGER2
FILE1 -ef FILE2
FILE1 and FILE2 have the same device and inode numbers
FILE1 -nt FILE2
FILE1 is newer (modification date) than FILE2
FILE1 -ot FILE2
FILE1 is older than FILE2
-b FILE
FILE exists and is block special
-c FILE
FILE exists and is character special
-d FILE
FILE exists and is a directory
-e FILE
FILE exists
-f FILE
FILE exists and is a regular file
-g FILE
FILE exists and is set-group-ID
-h FILE
FILE exists and is a symbolic link (same as -L)
-G FILE
FILE exists and is owned by the effective group ID
-k FILE
FILE exists and has its sticky bit set
-L FILE
FILE exists and is a symbolic link (same as -h)
-O FILE
FILE exists and is owned by the effective user ID
-p FILE
FILE exists and is a named pipe
-r FILE
FILE exists and is readable
-s FILE
FILE exists and has a size greater than zero
-S FILE
FILE exists and is a socket
-t [FD]
file descriptor FD (stdout by default) is opened on a terminal
-u FILE
FILE exists and its set-user-ID bit is set
-w FILE
FILE exists and is writable
-x FILE
FILE exists and is executable
Beware that parentheses need to be escaped (e.g., by backslashes) for
shells. INTEGER may also be -l STRING, which evaluates to the length
of STRING.
AUTHOR
Written by FIXME: ksb and mjb.
REPORTING BUGS
Report bugs to <bug-coreutils@gnu.org>.
COPYRIGHT
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
SEE ALSO
The full documentation for test is maintained as a Texinfo manual. If
the info and test programs are properly installed at your site, the
command
info test
should give you access to the complete manual.
GNU coreutils 4.5.3 February 2003 TEST(1)
再看两个简单的例子:
[plain]
#示例一
#!/bin/bash
#iftest2
echo -n "Enter your name:"
read NAME
#did the user just hit return
if [ "$NAME" == "" ];
then
echo "You did not enter any infomation"
else
echo "Your name is ${NAME}"
#示例二
#!/bin/bash
#ifelif
echo -n "Enter your name:"
read NAME
if [ -z $NAME ] || [ "$NAME" = "" ];
then
echo "You did not enter a name."
elif [ "$NAME" = "root" ];
then
echo "Hello root"
elif [ "$NAME" = "chinaitlab" ];
then
echo "Hello chinaitlab"
else
echo "You are not root or wgb,but hi,$NAME"
fi
小技巧:
1.Linux对Shell的要求很严格,不要把代码洁癖(比如定义变量的空格、if、while等等中为了美观留下的空格)带到Linux Shell编程中,稍不注意就会报错;
2.多用man或者info,会收到意想不到的收获。