条件测试语句
条件测试:
格式1:test 条件表达式
格式2:[ 条件测试表达式 ] (两边都要有空格)
test 常用的操作符:
1 -e 测试命令或者文件(也可以是目录)是否存在 (常用)
2 -d 测试是否为目录(常用)
3 -f 测试是否为文件(常用)
4 -r 测试当前用户是否有读权限
5 -w 测试当前用户是否有写权限
6 -x 测试当前用户是否有执行权限
比较符号:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
只能用于比较整数,不能用于其他类型(会直接报错)
字符串比较:
(只能比较字符串是否一致)
== 等于
!= 不等于
> 大于 >=大于等于
< 小于
两个就不行了 (用英文表达式)
[ ] 两边都要有空格 不能用
[ [ ] ] 语法和单中括号一致。
1 功能更强大
2 避免歧义
严谨,一定不会出错
逻辑测试:
且 两边都要为真 -a &&
或 有一边满足即可 -o ||
!逻辑否
[ ] [[ ]]都可以
[ 表达式1 ] 操作符 [ 表达式2 ]
[ 条件表达式 ] 只能用 -a -o
[[ 条件表达式 ]] 只能用&& ||
if语句:
单分支结构格式:
if [ ] (或者[[ ]])
then
命令序列
fi
双分支结构:
条件满足执行then 不满足执行else
if [ ]
then
echo"满足"
else
echo"不满足"
fi
要求有1个地址,这个需要你手动输入,然后判断,ping通要保留到/opt/hots.txt
ping不通,打印结果
现在我有1-100这么多数,输入一个数,来判断一个数是偶数还是奇数
多分支结构:
if [ 条件1 ]
then
执行条件1命令
elif [ 条件2 ]
then
执行条件2命令
else
都不满足,执行else的命令
fi
现在有一个分数值:
大于等于85 小于等于100
优秀
大于等于70 小于等于84
一般
大于等于60 小于等于69
及格
都不满足 抄30便
if嵌套:
if [ ]
if [ ]
第一步进行过滤,只有是整数才能进行判断
0-100
输入一个数,判断是整数,而且必须在0到100之前
才能继续执行
输入的数字是奇数还是偶数
当用户输入一个数,判断是否为整数,但是根据数字的大小打印不同的消息
10 输入的数字大于10 输入的数字小于10
输入的数字和10 相等
else输入的不合法
case语句结构:
case 变量引用 in
模式1)
命令分支1
;;
模式2)
命令分支2
;;
...
*)
默认命令分支
esac
bash -x test.sh 检测语法逻辑的方式
用case语句
奇数还是偶数
如果是奇数
echo 加1之后的结果
如果是偶数
echo 加2之后的结果
输入不对