目录
一、条件测试
1)test命令
- 测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
2)文件测试
[ 操作符 文件或目录 ]
常用的测试操作符
操作符 | 作用 |
-e | 测试指定的文件或者目录是否存在 |
-f | 测试指定对象是否为文件;指定的文件是否存在 |
-d | 测试指定的对象是否为目录;指定的目录是否存在 |
-r | 测试指定用户是否有读权限 |
-w | 测试当前用户是否有写权限 |
-x | 测试当前用户是否有执行权限 |
-L | 测试文件是否为符号链接(软链接文件) |
4)整数值比较
[ 整数1 操作符 整数2]
常用的测试操作符
操作符 | 含义(整数对比) | 符号表示(可用于字符串) |
-eq | 等于 | == |
-gt | 大于 | \> |
-lt | 小于 | \< |
-ge | 大于等于 | >=或=> |
-le | 小于等于 | <=或=< |
-ne | 不等于 | !=luo |
6)逻辑测试
格式1:[ 表达式1 ] 操作符 [ 表达式2 ]
格式2:命令1 操作符 命令2 ……
常用的测试操作符
操作符 | 符号 | 名称 | 解释 |
-a | && | 逻辑且 | 前后条件都要成立 |
-o | || | 逻辑或 | 只需前后条件中一个成立 |
! | 逻辑否 | 否定 |
7)三元运算符
[ 表达式 ] && a || b #如果表达式为真,则返回a,否则返回b
[ 表达式 ] && a #如果表达式为真,则返回 a,否则返回表达式的值
二、if语句
If条件判断语句,通常以if开头,fi结尾。也可加入else或者elif进行多条件的判断
1)单分支结构
# 单分支语句
if [ 表达式 ];then
语句1
fi
示例:判断/opt目录下,有没有这个test.sh这个文件,如果没有则进行创建
2)双分支结构
# 双分支if 语句
if [ 表达式 ];then
语句1
else
语句2
fi
示例:ping 指定的IP,能ping通echo online,ping不通,则打印 echo offline
ps:&> /dev/null为把输出显示器的信息放入/dev/null黑洞文件中,这样就不会提示
3)多分支结构
# 多支条件语句
if [ 表达式 ];then
语句1
elif [ 表达式 ];then
语句2
elif [ 表达式 ];then
语句2
fi
示例:手动输入分数,并根据分数段进行评级,85-100为A,70-84为B,60-59为C,0-59为D
4)内嵌if语句
即if中嵌套if语句
if [ 表达式 ];then
if [ 表达式 ];then
语句1
else
语句2
fi
else
语句3
fi
示例:提示用户输入100米赛跑的秒数
要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰
如果输入其他字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别
男生进男生组,女生进女生组,如果输入错误请提示错误
三、case分支语句
#Case选择语句,主要用于对多个选择条件进行匹配输出,与if elif语句结构类似,通常用于脚本传递输入参数,打印出输出结果及内容,其语法格式以Case…in开头,esac结尾。语法格式如下:
case 模式名 in
模式 1)
命令
;;
模式 2)
命令
;;
*)
不符合以上模式执行的命令
esac
# 每个模式必须以右括号结束,命令结尾以双分号结束。
示例:手动输入分数,并根据分数段进行评级,85-100为A,70-84为B,60-59为C,0-59为D