条件判断

条件判断
test 选项 判断内容
test -f file&&echo 1||echo 0 #判断file文件是否存在 存在输出1 不存在输出0
0
test ! -f file&&echo 1||echo 0 #!取反
1

[] 单中括号中不能加 && 或 || -a=&& -o=||
[ -f file ]&&echo 1||echo 0
0
[ ! -f file ]&&echo 1||echo 0
1
[ -f file -a -d doc ]&&echo 1||echo 0 #-a等同于&& 判断file文件和doc目录是否同时存在
[[]]双中括号中能加 && 或 ||
[[ -f file && -d doc ]]&&echo 1||echo 0
0

文件测试操作符
-f 若文件存在且为普通文件则为真
-d 若目录存在为真
-s 若文件存在且不为空(文件大小非0)位真
-e 若文件存在为真不管是文件还是目录都为真(要区别-f)
-r 若文件存在且可读为真
-w 若文件存在且可写为真
-x 若文件存在且可执行为真
-L 若文件存在且为链接文件则为真

f1 –nt f2 若文件f1比文件f2新则为真
f1 –ot f2 若文件f1比文件f2旧则为真
可在 man test 查看

字符串测试操作符
-z 若串长度为0位真
-n 若字符串非0为真
例:如不输入传参则退出程序
read -p "请输入主机名: " $name
[ -z $name ] && echo "请输入主机名: " && exit 2

“串1” = ”串2” 若串1等于串2为真
串1” != ”串2” 若串1不等于串2为真
注意:1字符串测试操作字符串必须要用””引起来
2 比较符号两端必须要有空格

整数比较操作符
在[]中使用的比较符 在(())和[[]]中使用比较符 说明
-eq == 相等
-ne != 不相等
-gt > 大于
-ge >= 大于等于
-lt < 小于
-le <= 小于等于

注释:单[]中如果包含> <需要转译 =和!= 不用转译
[ 2 < 1 ]&&echo 1||echo 0 不转译判断错误 但不会报错,中括号两边必须有空格
1
[ 2 < 1 ]&&echo 1||echo 0 转译输出正确
0
[[ 2 < 1 ]]&&echo 1||echo 0
0

工作中尽量是用[] -eq写法

正则测试操作
正则测试最常用的是变量是否为整数

test=123
[[ $test =~ ^[0-9]+ ]]
echo $?

test=12aa3
[[ $test =~ ^[0-9]+$ ]]
echo $?

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值