目录
条件测试
语句:test命令 条件成立返回0,否则返回其他值
格式:
1、test 条件表达式
2、[ 条件表达式 ] 里面要有空格
文件测试:[ 操作符 文件或者目录 ]
-d 测试是否为目录(director)
-e 测试目录或文件是否存在(exist)
-f 测试是否为文件(file)
-r 测试当前用户是否有读的权限(read)
-w 测试当前用户是否有写的权限(write)
-x 测试是否有执行的权限(eXcete)
数值比较:[ 整数1 操作符 整数2 ]
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于或等于
-ge 大于或等于
! 取反
[root@localhost ~]# [ 100 -le 120 ]&& echo "yes"
yes ## 100小于120 所以输出yes
[root@localhost ~]# [ 100 -le 12 ]&& echo "yes"
[root@localhost ~]# ## 判断不正确 所以什么都不输出
字符串测试:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
[ -z 字符串 ]
= 字符串内容相同
!= 字符串内容不相同
-z 字符串内容为空
逻辑测试: [ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
-a 或 && 逻辑与 而且的意思
-o 或|| 逻辑或 或者的意思
! 逻辑否
if语句
单分支格式
if [ 条件测试操作 ]
then 命令序列
fi
双分支结构
双分支格式: if [ 条件测试操作 ]
then 命令序列1
else 命令序列2
fi
多分支格式
if [ 条件测试操作1 ]
then 命令序列1
elif [ 条件测试操作2 ]
then 命令序列2
else 命令序列3
fi
例如
[root@localhost ~]# vim lan.sh //打开一个lan.sh进行脚本编辑
#!/bin/bash //声明解释器
read -p "分数成绩:" fen
if [ $fen -ge 85 ]; then //运用多分支结构 进行将成绩分数分类
echo "成绩优秀"
elif [ $fen -ge 70 -a $fen -le 84 ];then
echo "成绩良好"
elif [ $fen -ge 60 -a $fen -le 69 ];then
echo "成绩合格"
elif [ $fen -lt 60 ];then
echo "成绩不合格"
fi
[root@localhost ~]# bash lan.sh //通过bash来将lan.sh进行运行
分数成绩:20
成绩不合格
[root@localhost ~]# bash lan.sh
分数成绩:90 //查看的分数在哪个阶段下面
成绩优秀
case语句
多分支结构
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
......
*)
默认命令序列
esac
实例
[root@localhost ~]# vim week.sh
#!/bin/bash //声明解释器
read -p "请输入月份:" month //将输入月份来判断是哪个季度
case $month in
[1-3]) //1-3 表示的是第一个季度
echo "这是第一个季度";;
[4-6])
echo "这是第二个季度";;
[7-9])
echo "这是第三个季度";;
1[0-2])
echo "这是第四个季度";;
*)
echo "输入错误";;
esac
[root@localhost ~]# bash week.sh //执行该文件
请输入月份:1 //输入1 表示查看1月份是在哪个季度上面
这是第一个季度
[root@localhost ~]# bash week.sh
请输入月份:4
这是第二个季度
[root@localhost ~]# bash week.sh
请输入月份:7
这是第三个季度
[root@localhost ~]# bash week.sh
请输入月份:10
这是第四个季度