shell变量比较及选择语句

本文详细介绍了Shell脚本中变量的判断方式,包括文件操作符、整数比较、字符比较、浮点数运算和逻辑式。同时,文章还深入讲解了shell选择语句,如if语句的单分支、双分支和多分支以及case语句的使用,为Shell编程提供了实用的指导。

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

目录

1.shell变量判断方式

1.1 文件操作符

1.2 整数比较

1.3 字符比较

1.4 浮点数运算

1.5 逻辑式

三元运算符

2.shell选择语句

2.1 if语句

2.1.1 单分支

2.1.2 双分支

2.1.3 多分支

2.2 case语句

1.shell变量判断方式

shell中,变量的判断方式有两种

test [操作符选项] 表达式
[ 操作符选项 表达式 ]

后一种方法省略了前一种方法的test,并用方括号将整个语句包裹了起来,但要注意的是“[”内两边要有空格

实例:

1.

2. 

1.1 文件操作符

在上面的格式中,出现了文件操作符,那么上面是文件操作符?

文件操作符用于检测linux系统中的文件属性,常见的文件操作符有:

  • -e 测试指定的文件或者目录是否存在

  • -f 测试指定的对象是否为文件;指定的文件是否存在

  • -d 测试指定的对象是否为目录;指定的目录是否存在

  • -r 测试当前用户是否有读权限

  • -w 测试当前用户是否有写权限

  • -x 测试当前用户是否有执行权限

  • -L 测试文件是否为符号链接(软链接文件)

实例:

1.

2. 

1.2 整数比较

shell中,整数的比较格式为

[ 整数变量1 操作符 整数变量2 ]

shell采用的操作符并不是符号,而是英文缩写

  • -eq 等于

  • -gt 大于

  • -lt 小于

  • -ge 大于等于

  • -le 小于等于

  • -ne 不等于

实例:

1.3 字符比较

字符串之间的比较,基本上就是等于不等的关系

[ "字符串1" = "字符串2" ]  或者  [ "字符串1" == "字符串2" ]  判断是否相等

[ "字符串1" != "字符串2" ]                                  判断是否不等  

实例:

 此外我们还可以使用字符串有关的操作符

[ -z "字符串" ]    -z:判断字符串是否为空,或者 指定的变量是否为空值

[ -n "字符串" ]    -n:检查是否有字符串存在

1.4 浮点数运算

浮点数运算也就是小数的运算,在shell中有两种实现的方法

echo "浮点运算字符串" | bc          交给bc计算器计算

awk 'BEGIN {print 浮点运算字符串}'  使用awk进行计算

实例:

 

1.5 逻辑式

逻辑式的几种操作符

与操作  -a  &&  前后条件都要成立

或操作  -o  ||  只需前后条件中一个成立

三元运算符

[ 表达式 ] && a || b

当条件表达式为真时,取a值;当条件表达式为假时,取b值 也称为短路

2.shell选择语句

2.1 if语句

2.1.1 单分支

单分支if语句只能进行一次条件判断,如果满足则执行,不满足则不执行

if [ 表达式 ];then
  满足条件表达式执行语句
fi

2.1.2 双分支

双分支语句,当满足条件表达式时,执行then后面的语句,如果不满足则执行,else后面的语句

if [ 表达式 ];then
  ...
else
  ...
fi

2.1.3 多分支

多分支语句适用于需要多次判断的情况,会有多个条件表达式,根据判断的结果执行相应的语句,最后的

if [ 表达式 ];then
  ...
elif [ 表达式 ];then
  ...
elif [ 表达式 ];then
  ...
[else]

fi

2.2 case语句

case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分支选择结构。

case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下

case 变量 in 
模式1)
  ....
  ;;

模式2)
  ....
  ;;

...

*)  
  ....
esca  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值