一. 条件测试
test命令
- 测试表达式是否成立,若成立返回0,否则返回其他数值
- 格式1:test 条件表达式
- 格式2:[ 条件表达式 ]
1.文件测试
[ 操作符 文件或目录 ]
- 常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
-L:测试当前是否为软连接或者符号链接文件
2.整数值比较
[ 整数1 操作符 整数2 ]
用于比较两个整数值的大小。
$() 和 反撇号 是用来提取里面命令的执行结果。
- 常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
3.字符串比较
[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
[ -z 字符串 ]
用于比较两个整数值的大小。
=:字符串内容相同
!=:字符串内容不同,!号表示相反的意思
-z:字符串内容为空
4.逻辑测试
[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
- 常用的测试操作符
-a或&&:逻辑与,“而且”的意思
-o或||:逻辑或,“或者”的意思
!:逻辑否
-a或&& :逻辑与,“而且”的意思,为真时,左右表达式需都成立
-o或|| :逻辑或,“或者”的意思,只需前后条件中一个成立
注:-a 和 -o 需要在 [ ] 括号中执行。
二. if语句的结构
1.单分支结构
# 比较10大于5,是就直接输出0k
#!/bin/bash
if [ 10 -ge 5 ]
then
echo "ok"
fi
2.双分支结构
# 查看0端口是否运行,没有运行就开启运行
#!/bin/bash
netstat -natp | grep ":80"
if [ $? -eq 0 ];then
echo "网站服务已经运行!"
else
echo "启动httpd服务"
yum install -y httpd > /dev/null
systemctl start httpd
fi
3.多分支结构
#!/bin/bash
read -p "请输入你的分数:" score
if [ $score -gt 99 ] && [ $score -le 100 ];then
echo "牛逼"
elif [ $score -ge 90 ] && [ $score -le 99 ];then
echo "可以"
elif [ $score -ge 60 ] && [ $score -le 89 ];then
echo "好好努力"
else
echo "脑子瓦特了"
fi
三. case语句结构
通配符操作
case语句注意事项
①case行首必须以单词“in”,每一模式必须以单个右括号")"结束
②双分号";;"表示命令序列的结束
③模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b
最后的*)表示默认模式,其中的*相当于通配符