if常用的几个判断
- 文件比较
-e file 如果 file存在,则为真
-d file 如果 file为目录,则为真
-f file 如果 file为常规文件,则为真
-L file 如果 file为符号链接,则为真
-r file 如果 file可读,则为真
-w file 如果 file可写,则为真
-x file 如果 file可执行,则为真
-c file 如果 file为字符特殊文件为真
-b file 如果 file为块特殊文件为真
-s file 如果 file大小非0时为真
-t file 如果 file描述符(默认为1)指定的设备为终端时为真
- 字符判断
str1 = str2 当两个串有相同内容、长度时为真
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真
\ > \ < 比较大小的时候 可以使用大于号,小于号,但是需转义。
- 数字判断
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
- 复杂的逻辑判断
-a 与 and
-o 或 or
! 非
&& 代表and
|| 代表or
例如:
if [ “b” eq 2 ] && [ “$c” eq 3 ]
- 说明
"[]"判断符号,中括号两端都需要空格符来分隔。常与if等判断语句一起使用
例如:
if [ $OSNAME = "AIX" ] ; then
LANG=ja_JP
export LANG
elif [ $OSNAME = "HP-UX" ] ; then
LANG=ja_JP.eucJP
export LANG
fi
test和if判断类似,
例如:判断文件是否存在
test -e file
if [ -e file ]
-
if常用判断有三种形式:
-
只用if…fi的判断
if [ ${ret} -ne 0 ];then exit 1; fi
- if…else…fi的判断
if [ $OSNAME = "AIX" ] ; then
LANG=ja_JP
export LANG
else
exit 1
fi
- if…elif…fi/if…elif…else…fi判断
if [ $OSNAME = "AIX" ] ; then
LANG=ja_JP
export LANG
elif [ $OSNAME = "HP-UX" ] ; then
LANG=ja_JP.eucJP
export LANG
else
exit 1
fi