http://man.linuxde.net/test
http://blog.chinaunix.net/uid-24780853-id-2578709.html
[root@server1 ~]# man test TEST(1) User Commands TEST(1) NAME test - check file types and compare values SYNOPSIS test EXPRESSION test [ EXPRESSION ] [ ] [ OPTION DESCRIPTION Exit with the status determined by EXPRESSION. --help display this help and exit --version output version information and exit An omitted EXPRESSION defaults to false.
Otherwise, EXPRESSION is true or false and sets exit status. It is one of: ( EXPRESSION ) EXPRESSION is true ! EXPRESSION EXPRESSION is false
if 执行的选择与 $?返回值有关
test ==== [ ]
------------------------------------------------------------------
[root@server1 ~]# test
[root@server1 ~]# echo $?
1
[root@server1 ~]# [ ]
[root@server1 ~]# echo $?
1
--------------------------------------------------------------------------
(ls) 与 $(ls) 区别:
(ls)在子shell中执行ls命令,屏幕显示结果
a=$(ls):把ls执行命令结果,即输出值放到变量a中,重定向输出到a(不包括错误输出)
[root@server1 kk]# (ls)
mm
[root@server1 kk]# echo $?
0
[root@server1 kk]# (ls tt)
ls: 无法访问tt: 没有那个文件或目录
[root@server1 kk]# echo $?
2
[root@server1 kk]# ! ls
mm
[root@server1 kk]# echo $?
1
说明"!":作用是$?取反
-----------------------------------------------------------------------------------------------------------------------------
echo $((2>1))
1
echo $((2==1))
0
echo $((2<1))
0
a=$(( 2+1 ))
b=$(( 2-1 ))
c=$(( 2*1 ))
d=$(( 2/1 ))
-------------------------------------------------------------------------------------
[root@server1 kk]# true
[root@server1 kk]# echo $?
0
[root@server1 kk]# false
[root@server1 kk]# echo $?
1
--------------------------------------------------------------------------
-a:
-o:
EXPRESSION1 -a EXPRESSION2
both EXPRESSION1 and EXPRESSION2 are true
EXPRESSION1 -o EXPRESSION2
either EXPRESSION1 or EXPRESSION2 is true
---------------------------------------------------------------------------------------
字符串:
-n STRING
the length of STRING is nonzero
STRING equivalent to -n STRING
-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
-G FILE
FILE exists and is owned by the effective group ID
-h FILE
FILE exists and is a symbolic link (same as -L)
-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 read permission is granted
-s FILE
FILE exists and has a size greater than zero
-S FILE
FILE exists and is a socket
-t FD file descriptor FD is opened on a terminal
-u FILE
FILE exists and its set-user-ID bit is set
-w FILE
FILE exists and write permission is granted
-x FILE
FILE exists and execute (or search) permission is granted
-------------------------------------------------------------------------------------------------------------------------------
Except for -h and -L, all FILE-related tests dereference symbolic links. 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.
NOTE: [ honors the --help and --version options, but test does not. test treats each of those as it treats
any other nonempty STRING.
NOTE: your shell may have its own version of test and/or [, which usually supersedes the version described
here. Please refer to your shell’s documentation for details about the options it supports.
原文:http://www.cnblogs.com/zengkefu/p/5557277.html