当前位置:   article > 正文

shell编程(五)运算符_shell运算符i

shell运算符i

一、算术运算符

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

expr语法

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

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

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

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

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

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

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

二、比较运算符

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/251312
推荐阅读
相关标签
  

闽ICP备14008679号