您的位置:首页 > 运维架构 > Shell

shell test [ ]

2016-06-03 18:32 351 查看
http://vbird.dic.ksu.edu.tw/linux_basic/0320bash.php#settings_wildcard http://www.linuxde.net/2013/06/14634.html 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 kk]# test 2
[root@server1 kk]# echo $?
0

[root@server1 kk]# test ""
[root@server1 kk]# echo $?
1

[root@server1 kk]# test kkkkkkkk
[root@server1 kk]# echo $?
0

[root@server1 ~]# unset a
[root@server1 ~]# [ "$a" == "" ]
[root@server1 ~]# echo $?
0

[root@server1 ~]# test $a
[root@server1 ~]# echo $?
1

------------------------------------------------------------------

[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

说明"!":作用是$?取反

-----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------

[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

[root@server1 kk]# [ "a" \> "ABC" ]
[root@server1 kk]# echo $?
0


------------------------------------------------------------------------------------------------------------
整型:
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

echo $((2>1))


1


echo $((2==1))


0


echo $((2<1))


0


a=$(( 2+1 ))
b=$(( 2-1 ))
c=$(( 2*1 ))
d=$(( 2/1 ))


---------------------------------------------------------------------------------------------------------------------------------
文件:
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: