if条件语法规则
单分支if语句
if 表达式;then
语句1
else
语句2
fi
多分支if语句
if 表达式1;then
语句1
elif 表达式2;then
语句2
…
else
语句n
fi
实例
#!/bin/bash
NUM=200
if(($NUM > 4));then
echo "num is greater than 4!"
else
echo "num is less than 4!"
fi
注意:
1)在比较数字大小时,表达式应该用两个小括号括起来;
2)if表达式后需要一个分号,然后再加上then;
3)各条处理语句需缩进;
4)条件语句结尾需使用fi;
shell逻辑运算符
-eq: 等于 应用于整型比较
-ne: 不等于
-lt: 小于 应用于整型比较,字符串比较使用’>‘或’<’
-gt: 大于
-le: 小于等于
-ge: 大于等于
-a: 与运算
-o: 或运算, 非运算直接在判断语句前加!
shell内置判断符号
-z: 空字符串
-e: 判断文件是否存在,若存在,结果为真
-d: 判断目录是否存在,若存在,结果为真
-f :判断文件是否为一个普通文件,若是,结果为真
-s: 判断文件长度是否为0,若文件长度不为0,结果为真
-r:判断文件是否可读,若文件可读,结果为真
-w:判断文件是否可写,若可写,结果为真
-x:判断文件是否可执行,若可,结果为真
实例
判断目录是否存在,不存在则创建
#!/bin/bash
DIR=/temp/shell
if [ ! -d $DIR ];then
mkdir -p $DIR
else
echo "this dir is exist,please exit..."
fi
判断文件是否存在
#!/bin/bash
FILE=test.txt
if [ ! -f $FILE ];then
echo "OK" >> $FILE
else
echo -e "\033[32m----------------\033[0m"
cat $FILE
fi
多个条件判断
#!/bin/bash
scores=80
if [[ $scores -gt 90 ]]; then
echo "very good!"
elif [[ $scores -gt 70 ]]; then
echo "good!"
elif [[ $scores -gt 60 ]]; then
echo "pass!"
else
echo "no pass!"
fi
注意:
1)表达式与中括号之间一定要有空格区分;
2)if表达式可以是[],[[]]或(())等条件表达式,[]一般用于判断文件或路径,[[]],(())一般用于数值的判断;使用’[]'时注意在变量的外侧加上双引号"$scores"
关于[]与[[]]之间的区别可以看看这篇文章,[]与[[]]之间的区别,讲的通俗易懂。
3)只有else这一判断语句不需要then,其余分支都需要then语句;
以输入参数的方式来实现
先判断参数是否输入,若输入了,则继续后面的判断,否则提示未输入
#!/bin/bash
scores=$1
if [ -z $scores ]; then
echo "score is empty!"
echo "Usage: {$0 60|80.}"
exit
fi
if [[ $scores -gt 90 ]]; then
echo "very good!"
elif [[ $scores -ge 70 ]]; then
echo "good!"
elif [[ $scores -ge 60 ]]; then
echo "pass!"
else
echo "no pass!"
fi
脚本执行命令
/bin/bash scores.sh 85