Shell编程之条件语句

本文详细介绍了Shell脚本中的条件测试,包括test命令、文件测试、常用测试操作符、整数和字符串比较以及逻辑运算符&&和||的用法。讲解了if条件判断语句的单分支、双分支和多分支结构,并提供了具体的示例,如文件存在性判断、权限测试以及用户身份验证等应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、条件测试

1.test命令

2.文件测试

3.常用的测试操作符

4.判断的表达方式

 5.整数比较

 6.字符串比较

7. && 与 ||

二、if条件判断语句


一、条件测试

  Shell 环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为 0 时表示成功,否则(非 0 值)表示失败或异常。使用专门的测试工具——test 命令,可以对特 定条件进行测试,并根据返回值来判断条件是否成立(返回值为 0 表示条件成立)。

1.test命令

测试表达式是否成立,若成立返回0,否则返回其他数值

  1. 格式1: test 条件表达式
  2. 格式2: [ 条件表达式 ]     注意中括号和表达式中间需要隔一个空格
  3. 格式3:[[ 条件表达式 ]]

2.文件测试

  文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读、可写、可执行等。

[ 操作符 文件或目录 ]

3.常用的测试操作符

  • -d:测试是否为目录(Directory)
  • -e:测试目录或文件是否存在(Exist)
  • -f:测试是否为文件(File)
  • -r:测试当前用户是否有权限读取(Read)
  • -w:测试当前用户是否有权限写入(Write)
  • -x:测试当前用户是否有权限执行(eXcute)
  • -b:测试是否为设备文件
  • -c:测试是否为字符设备文件
  • -s:测试存在且文件大小为空
  • -L:测试是否为链接文件

执行条件测试操作以后,通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件是否成立。

4.判断的表达方式

  1. test
  2. [ ]
  3. [[ ]]
[ ] 和 [[ ]] 区别  []不支持正则核通配符  [[]]支持
选项:
  • -a 文件是否存在
  • -e 文件是否存在
  • -f 判断是否是普通文件
  • -d 判断是否是目录文件
  • -r 判断当前用户对文件是否可读
  • -w 判断当前用户对文件是否可写
  • -x 判断当前用户对文件是否可执行

 通式:test 选项 测试的内容

 没有空格会报错(错误示范)

 

建议脚本中使用 [ ] 来表示判断(补充)

-a -e 的区别  -a取反会有问题 建议使用 -e

 

 [[ ]] 加强版的[ ] (补充)

  • 正则表达式:过滤文件中的内容
  • 通配符:去找文件名,无法处理文件中的内容
使用两个[ 要使用2个 == 右边使用通配符

 

 =~ 右边可以使用正则表达式

 

 正则当中:

  • . 代表任意一个字符
  • .* 任意字符
  • \ 代表本来含义

 5.整数比较

通式: [ 整数1 操作符 整数2 ]
操作符:
  • -eq 等于
  • -ne 不等于
  • -lt 小于
  • -gt 大于
  • -le 小于等于
  • -ge 大于等于

 

 6.字符串比较

选项
  • = 两个字符串是否 相同
  • != 两个字符串是否不同
  • -z 字符串是否为空

 

 str="" 空字符 空格之间的区别

7. && 与 ||

短路与(且) : &&

全真才为真,一假即为假
cmd1 && cmd2
  • 第一个命令是假的 没有必要再执行命令2 应为肯定为假
  • 第一个命令是真的 我要执行命令2后才能判断是否为真
短路或(或者): ||
一真即为真,全假才为假
cmd1 || cmd2
  1. 第一个命令是真的,不需要执行命令2,应为肯定为真
  2. 第一个命令是假的,才会执行命令2后 判断整个式子是否为真

 

 短路与 短路或使用 只有一种模式 就是 cmd1 && cmd2 || cmd3

二、if条件判断语句

1.单分支
if [条件判断]
then
cmd1
fi
2.双分支:
if 条件判断[ ]
then
cmd1
else
cmd2
fi
3.多分支
if 条件判断[ ]
then
cmd1
elif 条件判断[ ]
then
cmd2
elif 条件判断[ ]
then
cmd3
.............................................................................
else
cmd2
fi

 ping 脚本

 

 判断当前用户是不是管理员

 多分支  分数脚本

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值