一、测试
1.1 test 命令
test 测试文件的表达式 是否成立
格式1:test 条件表达式
格式2:[ 条件表达式 ] #注意左右空格
1.1.1 操作符
操作符 | 注释 |
---|---|
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-a | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
-L | 测试是否为软连接文件 |
1.2 整数值比较
公式 : [ 整数1 操作符 整数2 ]
操作符 | 注释 |
---|---|
-eq | 第一个数等于(Equal)第二个数 |
-ne | 第一个数不等于(Not Equal)第二个数 |
-gt | 第一个数大于(Greater Than)第二个数 |
-lt | 第一个数小于(Lesser Than)第二个数 |
-le | 第一个数小于或等于(Lesser or Equal)第二个数 |
-ge | 第一个数大于或等于(Greater or Equal)第二个数 |
1.3 字符串比较
公式 : [ 字符串1 操作符 字符串2 ]
操作符 | 注释 |
---|---|
= | 字符串内容相同 |
!= | 字符串内容不同,! 号表示相反的意思 |
-z | 字符串内容为空 |
-n | 字符是否存在 |
1.4 逻辑测试
格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...
格式2:命令1 操作符 命令2 ...
操作符 | 注释 |
---|---|
-a 或 && | 逻辑与,“而且”的意思全真才为真 |
-o 或 || | 逻辑或,“或者”的意思一真即为真 |
! | 逻辑否 |
二、if语句的结构
2.1 单分支结构
格式:
if [ 条件表达式 ]
then
echo “命令序列”
fi
#判断是否为超级管理员
#!/bin/bash
if [ "$USER" != "root" ]
then
echo "非管理员用户无权限操作"
fi
2.2 双分支结构
格式:
if [ 条件表达式 ]
then
echo “命令序列”
else
echo “命令序列”
fi
#!/bin/bash
ip=192.168.56.1
ping -c3 $ip >>/dev/null
if [ $? = 0 ]
then
echo "$ip 该主机在线"
else
echo "$ip 该主机不在线"
fi
2.3 多分支结构
格式:
if [ 条件表达式 ]
then
echo “命令序列”
elif
else
echo “命令序列”
fi
#!/bin/bash
read -p "请输入你的考试分数(0~100):
if [ $grade -ge 85 ]&& [ $grade -le 100 ]
then
echo "你的成绩为$grade"
echo "你的成绩为优秀"
elif [ $grade -ge 70 ]&&[ $grade -le 84 ]
then
echo "你的成绩为$grade"
echo "你的成绩为良好"
elif
[ $grade -ge 60 ]&&[ $grade -le 69 ]
then
echo "你的成绩为$grade"
echo "你的成绩为合格"
else
echo "你的成绩为$grade"
echo "你的成绩不合格"
fi
2.4 case
格式:
case 变量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
默认分支
;;
esac
#!/bin/bash
read -p "请输入你的分数(0~100):"
case $score in
100)
echo "$score 你太优秀了"
;;
[89][0-9])
echo "$score 表现不错"
;;
[67][0-9])
echo "$score 你及格了"
;;
[0-9]|[1-5][0-9])
echo "$score 你不及格"
;;
*)
echo "输入有误"
esac