shell编程(五)运算符

一、算术运算符

介绍:expr是evaluate expressions的缩写,翻译为求值表达式,expr是一个功能强大的命令,除了可以实现整数运算,还可以结合一些选项进行字符串处理,例如计算字符串的长度、字符串的比较、字符串匹配、字符串提取等,这个后续会讲解。

expr语法

expr 算术运算符表达式
例如 expr 1 + 1

演示:
在这里插入图片描述
注意:数字和符号之前要有空格

获取计算结果赋值给变量的语法

result=`expr 算术运算符表达式`

在这里插入图片描述
常用的算术运算符
在这里插入图片描述
注意:

  • 乘法运算符* 需要反斜杠\转义
  • 如果四则运算中使用了小括号(),也需要转义
  • 不能运算小数

示例:
在这里插入图片描述
在这里插入图片描述

二、比较运算符

2.1、整数比较运算符

英文单词类的比较运算符,要使用方括号[]的方式比较,只能比较整数,或者纯整数形式的字符串

在这里插入图片描述
注意:方括号两侧要有空格

示例:这里比较简单,只演示一个
在这里插入图片描述
非单词类的运算符,要使用两个小括号(())的方式比较,只能比较整数,或者纯整数形式的字符串

在这里插入图片描述
示例:这里比较简单,只演示一个
在这里插入图片描述
注意:(())的方式不能使用单 = 进行判断相等,只能使用双等于 ==

2.2、字符串比较运算符

使用[]或者[[]]的方式,可以比较字符串,还可以比较纯字符串的整数和小数

在这里插入图片描述
在这里插入图片描述
注意:[[]]的方式比较字符串没有<= ,可以通过 [ $a < $b && $a==$b ]

2.3、应用场景

通常都是在if条件句中来配合使用

示例
在这里插入图片描述

2.4、总结

推荐使用双方括号[[]]的方式来进行比较运算,双方括号可以比较整数、小数、字符串,并且可以转义

三、布尔运算符

介绍

在这里插入图片描述
注意

  • 布尔运算符用[]执行,或者和test命令一起用,test命令后续会讲解
  • -a:与运算,有短路的执行效果,也就是第一个条件为false后续的条件就不会执行了

示例

在这里插入图片描述

四、逻辑运算符

介绍

在这里插入图片描述
注意:

  • &&和|| 必须在[[]]或者(())中才生效

  • !运算符可以在[] ,[[]]中使用,不能在(())中

示例
在这里插入图片描述

五、文件测试运算符

介绍:常用于检查linux文件的各种属性

例如:文件是否存在、是否可读可写可执行,是否是目录,是否是普通文件等等

文件类型介绍

-:普通文件

d:目录

l:链接文件

b:块设备文件

c:字符设备文件

p:管道文件

块设备文件:比如计算机硬盘/dev/sda

字符设备文件:比如计算机的usb文件/dev/usb

在这里插入图片描述
属性检测参数如下:
在这里插入图片描述
在这里插入图片描述
其他检测符:

-L:检测文件是否存在并且是一个链接符号

-S:检测文件是否socket

这里我们只介绍常用的几个

-d、-f、-r、-w、-x、-s、-e

示例,有两个文件demo8.sh,demo9.sh
在这里插入图片描述

#!/bin/bash
file1="/opt/study/demo8.sh"
file1="/opt/study/demo9.sh"
if [[ -d $file1 ]]
then
        echo "${file1}是目录"
else
        echo "${file1}不是目录"
fi

if [[ -r $file1 ]]
then
        echo "${file1}可读"
else
        echo "${file1}不可读"
fi

if [[ -w $file1 ]]
then
        echo "${file1}可写"
else
        echo "${file1}不可写"
fi

if [[ -x $file1 ]]
then
        echo "${file1}可执行"
else
        echo "${file1}不可执行"
fi

if [[ -f $file1 ]]
then
        echo "${file1}是普通文件"
else
        echo "${file1}不是普通文件"
fi

if [[ -e $file1 ]]
then
        echo "${file1}存在"
else
        echo "${file1}不存在"
fi

if [[ -s $file1 ]]
then
        echo "${file1}为空"
else
        echo "${file1}不为空"
fi

if [[ $file1 -nt $file2 ]]
then
        echo "${file1}${file2}新"
else
        echo "${file1}不比${file2}新"
fi

if [[ $file1 -ot $file2 ]]
then
        echo "${file1}${file2}旧"
else
        echo "${file1}不比${file2}旧"
fi

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值