if快捷键
——————————————————————————————————
[ ] && 如果为真则执行后面
[ ] || 如果为假则执行后面
文件表达式
——————————————————————————————————
if [ -f file ] 如果文件存在
if [ -d dd ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
字符串表达式
——————————————————————————————————
注意:“==” 的功能在[[]] 和[] 中是不一样的([[]]中不需要用转义字符)
if [ "$string" != "string2" ]
if [ "$string" =="string2" ]
if [ "$string1" \> "string2" ]
if [ "$string1" \< "string2" ] 或者是 if [[ "$string1" < "string2" ]]
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)
整数变量表达式
——————————————————————————————————
-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b")
逻辑表达式
——————————————————————————————————
逻辑非 ! 条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ] 如果不存在目录$num
逻辑与 –a 条件表达式的并列
if [ 表达式1 –a 表达式2 ]
逻辑或 -o 条件表达式的或
if [ 表达式1 –o 表达式2 ]
表达式与前面的= != -d –f –x -ne -eq -lt等合用
逻辑符号就正常的接其他表达式,没有任何括号( ),就是并列
if [ -z "$JHHOME" -a -d $HOME/$num ]
注意逻辑与-a与逻辑或-o很容易和其他字符串或文件的运算符号搞混了
if语句使用举例
#!/bin/bash
##filename:areyouok.sh
echo "Are you OK ?"
read answer
# 在 if 的条件判断部分使用扩展的 test 语句 [[...]]
# [[]] 中可以使用正则表达式进行条件匹配
if [[ $answer == [Yy]* || $answer == [Mm]aybe ]]
then
echo "Glad to hear it."
fi
#!/bin/bash
##filename:ask-age.sh
read -p"How old are you?" age
#使用Shell算数运算符(())进行条件测试
if((age<0||age>120));then
echo "Out of range!"
exit 1
fi
#使用多分支if语句
if((age>=0&&age<13));then
echo "Child!"
elif((age>=13&&age<20));then
echo "Callan!"
elif((age>=20&&age<30));then
echo "PIII!"
elif((age>=30&&age<40));then
echo "PIV"
else
echo "Sorry I asked."
fi
#!/bin/bash
##filename:useronline.sh
#if语句可以嵌套使用
if [ $# -eq 1 ] #或test $# -eq 1 或 [[ $#==1 ]] 或 (($#==1))
then
if who|grep ^$1>/dev/null
then echo "$1 is active."
else echo "$1 is not active."
fi
else
echo "Usage:$0<username>"
exit
fi