Shell脚本之条件判断

本文详细介绍了Linux shell脚本中的基本语法、常用判断条件,包括整数和字符串比较、文件权限和类型的判断。通过案例展示了如何检查文件存在性、权限以及执行状态,并解释了逻辑与(&&)和逻辑或(||)在多条件判断中的用法。最后,文章通过实例演示了if语句的基本使用,展示了根据年龄判断不同年龄段的逻辑流程。
摘要由CSDN通过智能技术生成

1.基本语法

[ condition ]注意condition前后要有空格注意:条件非空即为true,[ 666 ]返回true,[] 返回false。

2. 常用判断条件

(1)两个整数之间比较= 字符串比较
-lt 小于(less than)
-le 小于等于(less equal)
-eq 等于(equal)
-gt 大于(greater than)
-ge 大于等于(greater equal)
-ne 不等于(Not equal)
(2)按照文件权限进行判断
-r 有读的权限(read)
-w 有写的权限(write)
-x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence)
-d 文件存在并是一个目录(directory)

注意:任何命令的执行状态为0则为True,否则为False

3、案例

a、判断当前目录下某个文件是否存在
[ -e 文件名 ]
echo $?

b、判断当前文件是否存在并且是一个目录
[ -d 文件名 ]
echo $?

[root@mylinux2 shell]# [ 23 -lt 24 ]
[root@mylinux2 shell]# echo $?
0
[root@mylinux2 shell]# [ 23 -le 24]
-bash: [: 缺少 `]'
[root@mylinux2 shell]# [ 23 -le 24 ]
[root@mylinux2 shell]# echo $?
0
[root@mylinux2 shell]# [ 23 -le 22 ]
[root@mylinux2 shell]# echo $?
1

04_特殊变量-1.sh是否具有写权限
[root@mylinux2 shell]# [ -w 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
0

04_特殊变量-1.sh是否具有可执行的权限
[root@mylinux2 shell]# [ -x 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
1

04_特殊变量-1.sh是否是一个常规的文件(file)
[root@mylinux2 shell]# [ -f 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
0

04_特殊变量-1.sh是否是一个目录
[root@mylinux2 shell]# [ -d 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
1

判断文件04_特殊变量-1.sh是否存在当前目录下
[root@mylinux2 shell]# [ -e 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
0


(4)多条件判断
&& 表示前一条命令执行成功时,才执行后一条命令;
|| 表示上一条命令执行失败后,才执行下一条命令

逻辑与
a

[root@mylinux2 shell]# [ 23 -lt 24 ] && echo ok
ok

为什么打印ok?
因为条件表达式中23<24为True,而True 和 另一个条件不能确定整个结果,所以&&后面的echo ok要执行

b、

[root@mylinux2 shell]# [ 25 -lt 24 ] && echo ok
[root@mylinux2 shell]# echo $?
1

为什么执行不正确?
因为条件表达式25<24为False,而False && XXX,XXX为任意的逻辑运算都为False,所以后面的 echo ok 就不用执行了

逻辑或

[root@mylinux2 shell]# [ 25 -lt 24 ] || echo ok
ok

为什么打印ok?
因为条件表达式中25<24为False,而False 和 另一个条件不能确定整个结果,所以 || 后面的echo ok要执行

[root@mylinux2 shell]# [ 23 -lt 24 ] || echo ok
[root@mylinux2 shell]# echo $?
0

为什么执行正确?
因为条件表达式23<24为True,True || XXX,XXX不管是任何逻辑运算,其结果都为True,所以输出为0

4、if判断

1.基本语法

if [ 条件判断式 ];then   
	程序 
fi  

注意事项:
1)[ 条件判断式 ],中括号和条件判断式之间必须有空格
2)if后要有空格

脚本如下:
在这里插入图片描述
执行代码:

[root@mylinux2 shell]# bash 09if判断-1.sh 12
未成年
[root@mylinux2 shell]# bash 09if判断-1.sh 24
青年
[root@mylinux2 shell]# bash 09if判断-1.sh 33
中老年

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码敲到头发茂密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值