一、条件测试
test命令进行条件测试,然后根据返回值来判断条件是否成立。
常用操作符:
-e :既可以测试文件又可以测试目录是否存在
-d :测试目录是否存在
-f :测试文件是否存在
-r :测试当前用户是否对文件/目录有读权限
-w:测试当前用户是否对文件/目录有写权限
-x :测试当前用户是否对文件/目录有执行权限
$?: 返回码,判断命令或者脚本是否执行成功(最近的一条)
0 true为真就是成功,成立
非0 false 失败或者异常
二、比较符
(以下操作符只能用于整数比较)
| |||||||||||||
格式:注意空格
[ 3 -eq 5 ]
推荐使用[[ ]]可以使用更高级的模式,可以使用正则表达式,而且在双中括号中,使用字符串的时候可以不加引号
[[ 3 > 5 ]]
(( 3 > 5 ))
逻辑与和逻辑或
与:&& 条件都要满足才成立 也可以使用-a [ 2 -ne 1 ] && [ 2 -ne 3] 或者 [2 -ne 1 -a 2 -ne 3 ]
或:|| 有一个条件满足才成立 也可以使用-o [ 2 -ne 1 ] || [ 2 -ne 3] 或者 [2 -ne 1 -o 2 -ne 3 ]
但当是[[]]的时候需要注意 [[ 1 -gt 4 && 1 -eq 5 ]]
三、if语句
单分支结构:
if #条件判断,后面是条件测试语句then #满足执行,命令序列,只有条件测试成功语句成立,才会执行then的命令模块
fi #结束语句
双分支结构:
if #条件判断,后面是条件测试语句then #满足执行,命令序列,只有条件测试成功语句成立,才会执行then的命令模块
esle #不满足执行else 执行完毕,语句结束
fi #结束语句
双分支结构:
if []then命令序列elif []then命令序列elif []then命令序列else命令序列fi
例如:
read -p "请输入你的分数:" fenshu
if [ $fenshu -eq $fenshu ] &> /dev/null #/dev/null表示将冗余信息放进黑洞文件
thenif [[ $fenshu -ge 85 && $fenshu -le 100 ]]thenecho "优秀"elif [[ $fenshu -ge 70 && $fenshu -le 84 ]]thenecho "一般"elif [[ $fenshu -ge 60 && $fenshu -le 69 ]]thenecho "合格"elseecho "抄写30遍"fi
elseecho "输入错误,不是整数"
fi
四、 case语句
case语句 相当于多分支结构
case 变量值 in模式1)命令序列;; #终止case选项模式2)命令系列;;。。。。。。。。。。。*)命令序列esac