IF条件判断 1、基本语法: if [ command ]; then 符合该条件执行的语句 fi 2、扩展语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 fi 3、语法说明: bash shell会按顺序执行if语句,如果command执行后且它的返回状态是0,则会执行符合该条件执行的语句,否则后面的命令不执行,跳到下一条命令。 当有多个嵌套时,只有第一个返回0退出状态的命令会导致符合该条件执行的语句部分被执行,如果所有的语句的执行状态都不为0,则执行else中语句。 返回状态:最后一个命令的退出状态,或者当没有条件是真的话为0。 注意: 1、[ ]表示条件测试。注意这里的空格很重要。要注意在'['后面和']'前面都必须要有空格 2、在shell中,then和fi是分开的语句。如果要在同一行里面输入,则需要用分号将他们隔开。 3、注意if判断中对于变量的处理,需要加引号,以免一些不必要的错误。没有加双引号会在一些含空格等的字符串变量判断的时候产生错误。比如[ -n "$var" ]如果var为空会出错 4、判断是不支持浮点值的 5、如果只单独使用>或者 STRING2 ] 如果 “STRING1”字典排序在“STRING2”后面则返回为真。 数值判断 [ INT1 -eq INT2 ] INT1和INT2两数相等返回为真 ,= [ INT1 -ne INT2 ] INT1和INT2两数不等返回为真 , [ INT1 -gt INT2 ] INT1大于INT2返回为真 ,> [ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>= [ INT1 -lt INT2 ] INT1小于INT2返回为真 ,b且a b )) && (( a < c )) [[ $a > $b ]] && [[ $a < $c ]] [ $a -gt $b -a $a -lt $c ] 9:a>b或a b )) || (( a < c ))
[[ $a > $b ]] || [[ $a < $c ]]
[ $a -gt $b -o $a -lt $c ]
10:检测执行脚本的用户
?
1
2
3
4
if
[
"$(whoami)"
!=
'root'
]; then
echo
"You have no permission to run $0 as non-root user."
exit
1
;
fi
上面的语句也可以使用以下的精简语句
[ "$(whoami)" != 'root' ] && ( echo "You have no permission to run $0 as non-root user."; exit 1 )
11:正则表达式
?
1
2
3
4
doiido=
"hero"
if
[[
"$doiido"
== h* ]];then
echo
"hello,hero"
fi
============其他例子============
1、查看当前操作系统类型
?
1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
SYSTEM=`uname -s`
if
[ $SYSTEM =
"Linux"
] ; then
echo
"Linux"
elif [ $SYSTEM =
"FreeBSD"
] ; then
echo
"FreeBSD"
elif [ $SYSTEM =
"Solaris"
] ; then
echo
"Solaris"
else
echo
"What?"
fi
2、if利用read传参判断
?
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
read -p
"please input a score:"
score
echo -e
"your score [$score] is judging by sys now"
if
[
"$score"
-ge
"0"
]&&[
"$score"
-lt
"60"
];then
echo
"sorry,you are lost!"
elif [
"$score"
-ge
"60"
]&&[
"$score"
-lt
"85"
];then
echo
"just soso!"
elif [
"$score"
-le
"100"
]&&[
"$score"
-ge
"85"
];then
echo
"good job!"
else
echo
"input score is wrong , the range is [0-100]!"
fi
3、判断文件是否存在
?
1
2
3
4
5
6
7
8
9
10
#!/bin/sh
today=`date -d yesterday +%y%m%d`
file=
"apache_$today.tar.gz"
cd /home/chenshuo/shell
if
[ -f
"$file"
];then
echo
"OK"
else
echo
"error $file"
>error.log
mail -s
"fail backup from test"
loveyasxn924
@126
.com |