$? 返回码 用来判断命令或者是脚本是否执行成功(最近的一条--上一次的执行结果)
0 true 为真就是成功 成立
非0 false 失败或者异常
test 测试命令
1、test 命令 可以进行条件测试然后根据的是返回值来判断条件是否成立。
test -e 测试文件或者目录是否存在 exist
test -d 测试目录是否存在
test -f 测试文件是否存在
test -r 测试当前用户是否对文件或目录有读权限
test -w 测试当前用户是否对文件或目录有写权限
test -x 测试当前用户是否对文件或目录有执行权限
[root@test2 opt]# mkdir test1 [root@test2 opt]# touch test2 [root@test2 opt]# test -e test1 [root@test2 opt]# echo $? 0 [root@test2 opt]# test -d test2 [root@test2 opt]# echo $? 1 [root@test2 opt]# test -f test2 [root@test2 opt]# echo $? 0 [root@test2 opt]# ll 总用量 0 drwxr-xr-x. 2 root root 6 6月 12 09:37 test1 -rw-r--r--. 1 root root 0 6月 12 09:37 test2 [root@test2 opt]# test -r test1 [root@test2 opt]# echo $? 0 [root@test2 opt]# test -r test2 [root@test2 opt]# echo $? 0 [root@test2 opt]# test -x test2 [root@test2 opt]# echo $? 1 [root@test2 opt]# test 3 -eq 3 [root@test2 opt]# echo $? 0 [root@test2 opt]# test 3 -gt 3 [root@test2 opt]# echo $? 1
2、整数比较符 (一下操作只能用于整数比较)
第一种模式
-eq 等于 == 既可以比较整数,也可以比较字符串
-ne 不等于 != 不等于
-gt 大于 > 大于
-lt 小于 < 小于
-ge 大于等于 >= 大于等于
-le 小于等于 <= 小于等于
比较符的第二种
[ ]
[root@test2 opt]# [ 3 -eq 3 ] [root@test2 opt]# echo $? 0
第三种格式
[[ ]] 可以使用更高级的模式,可以使用正测表达式,而且再双括号,使用字符串的时候可以不加引号
[root@test2 opt]# a=3 [root@test2 opt]# [[ $a -eq 3 ]] [root@test2 opt]# echo $? 0
第四种格式
(( ))
[root@test2 opt]# (( 3 >= 5 )) [root@test2 opt]# echo $? 1 [root@test2 opt]# (( 6 >= 5 )) [root@test2 opt]# echo $? 0
逻辑与逻辑或
与 && 条件满足才成立
或 || 有一个条件满足就成立
[root@testl opt]# a=5 [root@testl opt]#[$a ne l]&& [ $a -ne 2 ] [root@testl opt]# echo $? 0 [root@testl opt]#[$a -ne l-a $a -ne 2 ] [root@testl opt]# echo $? 0 [root@test2 opt]# a=5 [root@test2 opt]# [ $a -ne 1 ] || [ $a -ne 3 ] [root@test2 opt]# echo $? 0
if语句
单份支结构
[root@test2 opt]# vim if.sh if [ 3 -gt 2 ] then echo "ok" fi #if 后面是测试语句 #then 命令序列,只有条件测试语句成立,才会执行then的命令模块 #fi 结束语句 [root@test2 opt]# sh if.sh ok
双分支结构
[root@test2 opt]# vim if.sh if [ 3 -gt 4 ] then echo "ok" else echo "no" fi wq! [root@test2 opt]# sh if.sh no #条件满足执行then,不满足执行else,执行完毕语句结束。
#随机输入一个整数,read-p输入一个数#判断这个数是偶数还是奇数,偶数提示偶数,奇数提示奇数 read -p "输入一个数" a if (( $a% 2 == 0 )) then echo "偶数" else echo "奇数" fi
多分支结构
#请输入您的分数,0-100大于等于85,且小于等于100 优秀 大于等于70,且小于等于84一般 大于等于60,且小于等于69 合格 小于60,30遍 read -p "请输入您的分数" a if [[ $a -ge 85 && $a -le 100 ]] then echo "优秀" elif [[ $a -ge 70 && $a -le 84 ]] then echo "一般" else [[ $a -ge 60 && $a -le 69 ]] echo "合格" else echo "30遍" fi
#a白定义输入,只有整数才可以进入到分数的区间。#嵌套if read -p "请输入您的分数" a if [[ $a -eq $a ]] then if [[ $a -ge 85 && $a -le 100 ]] then echo "优秀" elif [[ $a -ge 70 && $a -le 84 ]] then echo "一般" elif [[ $a -ge 60 && $a -le 69 ]] then echo "合格" else echo "30遍" fi else echo "报错" fi
case语句
相当于多分支结构