一、if 逻辑判断
1.1 基本语法和大小判断
在shell脚本中,if逻辑判断的基本语法为:
if 判断语句; then
command
elif 判断语句; then
command
else
command
fi
例如:
#! /bin/bash
read -p "Please input your score: " a
if (($a<60)); then
echo "You didn't pass the exam."
elif (($a>=60)) && (($a<85)); then
echo "Good! You pass the exam."
else
echo "Very good! Your socre is very high!"
fi
需要注意的是shell的判断语句也有特殊的格式,例如(($a<60)),必须有两层括号。此外还可以使用[]的形式,但是不能用>、<这些关系运算符了,使用[]的对应符号如下(注意'['的右边和']'的左边时必须留出空格):
使用(()) | 使用[] | 示例 |
---|---|---|
< | -lt | (($a<5)) 等价于 [ $a -lt 5 ] #注意空格 |
<= | -le | (($a<=5)) 等价于 [ $a -le 5 ] |
> | -gt | (($a>5)) 等价于 [ $a -gt 5 ] |
>= | -ge | (($a>=5)) 等价于 [ $a -ge 5 ] |
== | -eq | (($a==5)) 等价于 [ $a -eq 5 ] |
!= | -ne | (($a!=5)) 等价于 [ $a -ne 5 ] |
1.2 文档属性判断
Shell脚本中还经常用if来判断文档的属性,具体格式为:
if [ -e filename ]; then #同样地,注意[]里的空格
参数-e是判断文件是否存在的,其他常用参数如下:
参数 | 含义 |
---|---|
if [ -e filename ] | 判断文件或目录是否存在 |
if [ -d filename ] | 判断是不是目录,并是否存在 |
if [ -f filename ] | 判断是否是普通文件,并存在 |
if [ -r filename ] | 判断文档是否有读权限 |
if [ -w filename ] | 判断文档是否有写权限 |
if [ -x filename ] | 判断文档是否有执行权限 |
二、case逻辑判断
使用case的语法为:
case 变量 in
value1)
command
;;
value2)
command
;;
*)
command
;;
esac
case结构不限制value的个数,*代表所有其他值。下面是一个示例脚本,用来判断奇数还是偶数:
#! /bin/bash
read -p "Input a number: " n
a=$[$n%2]
case $a in
1)
echo "The number is odd."
;;
0)
echo "The number is even."
;;
*)
echo "It's not a number!"
;;
esac