一、简介

在我们写shell脚本的过程中,经常需要作比较判断,例如比较哪个数字大,判断文件是否存在,判断文件是否是目录,判断是否为真等操作。有时候我们还需要做运行,例如加减乘除等等,今天就来简单介绍比较表达式和运行表达式。

二、shell比较判断

1、文件状态:

表达式:[ -e 文件路径 ] 有空格隔开

例如:[ -e /root ] 判断/root 是否存在

(1) -e 是否存在 存在为真

(2) -d 是否是目录 是目录为真

(3) -f 是否是文件 是文件 为真

(4) -x 是否有执行权限 有执行权限为真

(5) -w 是否有写权限 有写权为真

(6) -r 是否有读权限 有读权限为真

2、整数值比较

[ num1 选项 num2 ]

例如:[ 2 -eq 2 ] 或者用变量[ $a -eq $b ]

(1) -eq 等于

(2) -ne 不等于

(3) -gt 大于

(4) -ge 大于等于

(5) -lt 小于

(6) -le 小于等于

3、字符比较

[ "string字串1" 选项 "string字串2" ]

例如:[ $name == "jim" ]

注意:选项和字串两边有空格!!!!字符一定用双引号引住。

(1) = = 相等 相等为真

(2) != 不相等 不相等为真 0

(3) -z 空 空为真

(4) !-z 非空 非空为真

4、逻辑判断:(两个或两个以上判断条件时使用逻辑比较)

(1) 逻辑 与:

&& 多个条件同时成立 [条件1] && [条件2]

(2) 逻辑 或:

|| 多个条件只要有一个条件成了就可以 [条件1] || [条件2]

(3) 逻辑 非 !=取反

PS:两种表达方式:

1.&&----[ 10 -gt 8 ] && [ 5 -lt 6 ] 2. -a 用法:[ 10 -gt 8 -a 5 -lt 6 ]

1.||----[ 10 -gt 8 ] || [ 5 -lt 6 ] 2. -o 用法:[ 10 -gt 8 -0 5 -lt 6 ]

(4) 调用变量时"" 与''的区别

字符用两个都一样输出,当变量时,单引号输出字符,双引号 使用变量的功能

例如:a =10 b=10

"$a + $b"=num2 结果是 10 + 10 =num2

'$a + $b'=num2 结果是 $a + $b =num2

三、shell运算语法

1、运算符

加+

减 -

乘*

除 /

取余 %

自加1 ++ i=0;let i++;echo $i

自减1 -- j=10;let j-- ; echo $j

2、运算命令

(1) expr命令 运算符: + - * / %

expr 整数1 整数2... 整数值由变量提供,直接给出运算结果

`expr $num1 + $num2`

(2) let命令

操作变量值,只运算,不输出结果

i=0;let i++;echo $i

i=0;i++;echo $i

(3) 使用$[]或者 $(())表达式(需要借助echo输出结果,运算类型与expr类似)

PS:乘法* 不需要加转义符

使用变量时,直接指定变量名,不用加$符号

echo $[]

echp $(())

1)例子:a=10 b=10

没加转义:

加转义:

2)a=10 b=10

echo $((a*b))

(4) 变量的递增、递减等操作

表达式的简化:

+=x 每次自加x

-=x 每次自减x

i=i+2 ----> i+=2

i=i-2 ----> i-=2

i=i-1 ----> i--

i=i*2 ----> i*=2

i=i+1 ----> i++

i=i%2 ----> i%=2

(5) 实战例子:加减乘除计算器

vim test.sh

运行结果:

四、重定向(改变数据的输出设备)

1、重定向输出

> 覆盖

>> 追加

2、重定向输入

< 覆盖

<< 追加

3、重定向错误输出

2> 覆盖

2>> 追加

4、重定向输出和错误输出

&> 覆盖

&>> 追加

5、/dev/null 一个黑洞设备

五、实战

(1) &和|| 脚本中的使用,重定向的使用

&& 前面的操作执行成功后面才继续执行,反之不执行后面的操作

例子:ping -c 3 1.1.1.1 &> /dev/null && echo "on line" (命令行不输出ping结果,直接输出结果)

例子: ping -c 3 121.201.88.88 2> /dev/null && echo "on line"(这个在命令行输出ping的结果,并且输出结果)

成功就输出内容 失败就什么都不输出

Ping失败,不输出内容

|| 前面的操作执行,后面的操作才执行。若前面的操作执行成功,后面的操作就不执行。

ping -c 2 121.201.88.89 || echo “pc not online”

(2) 实战:检测主机是否在线

vim test.sh

下期预告:shell脚本-条件判断语句if和循环语句for

睿江云计算官网链接:https://www.eflycloud.com/home?from=RJ_0024

bigdecimal判断等于0_Linux | shell脚本-比较判断和运算语句相关推荐

  1. shell脚本中判断大于、小于、等于、不等于的符号

    shell脚本中判断大于.小于.等于.不等于的符号 在shell中有时候会用到对数字进行判断的场景,尤其在写脚本判断参数的时候,以下有几个命令需要记住 大于 -gt (greater than) 小于 ...

  2. shell脚本中判断上一条python命令执行情况

    shell脚本中判断python命令执行结果 python脚本main.py import sys def main():try:"执行相关操作"sys.exit(0)except ...

  3. Shell 脚本中判断字符串非空

    前言 Shell 脚本中经常用到字符串,对字符串是否为空的判断很关键. 正文 在 Shell 中利用 -n 来判断字符串是否非空. 例子: if [[ str1 = str2 ]] # 当字符串 st ...

  4. 利用shell脚本批量判断目标ip存活情况

    一.目的 有时候需要批量去判断目标ip是否存活,一个一个去试多麻烦所以写了个shell脚本去批量尝试,原理使用的是去ping目标ip,虽然这种方法受很多因素影响,比如网速,防火墙禁ping等,但是也是 ...

  5. shell 脚本如何判断文件是否存在

    在进行linux系统相关应用程序开发时,少不了要书写一些shell脚本,有时候要用到判断文件或者目录是否存在的脚本,本文笔者做一下笔记,已备后查. shell判断文件是否存在的脚本如下: //[ 与 ...

  6. shell脚本之判断字符串是否相等

    0 总结 Get to the points first. The article comes from LawsonAbs! updata on 20200505:修改相关格式 1.问题 使用she ...

  7. Linux 下Shell脚本中的加减乘除运算

    在用shell脚本语言编程的时候,我们经常用到加减乘除等基本的数学运算操作,现在整理一下,放在这里,以备后用. Shell中常用的数学运算符有一下几个: +:对两个变量做加法.-:对两个变量做减法.* ...

  8. shell脚本--if判断(数字条件、字符串条件)

    二元比较操作符,比较变量或者比较数字. 注意数字与字符串的区别. 1.整数比较  [cpp] view plaincopyprint? -eq 等于,如:if [ "$a" -eq ...

  9. shell脚本中判断上一个命令是否执行成功

    2018-12-21 shell中使用符号"$?"来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败. 结合if-else语句实现判断上一个命令是否执行成功 示例如 ...

最新文章

  1. 快速搞懂平面设计视觉思维的窍门
  2. linux安装主从mysql,mysql8.0安装以及主从复制搭建(linux)
  3. AD9910高速集成DDS芯片(verilog篇-串行模式篇-22个寄存器SPI通信周期控制)
  4. Android --- 修改百度地图的显示范围的大小
  5. 启明云端方案分享| ESP32-C3智能网关应用解决方案
  6. 自动登录(过滤器filter的应用)
  7. struts codenips
  8. Qt-5种布局控件详解
  9. 非常有名的免费开源图库相册软件
  10. python获取eth0_python 获取网卡实时流量
  11. 教你写一个弹幕库,确定不了解一下?
  12. 港澳台手机号正则表达式,区号+手机
  13. tekla钢结构算量_钢结构、Tekla及建筑工业化厂商对Tekla软件的开发和应用
  14. ISO镜像转换成docker镜像
  15. 2020年杭州社保个人最低交多少
  16. 【App下载安装量】多渠道统计
  17. AVFrame结构体中变量解释
  18. Mysql数据库备份和还原
  19. ubunutu个人配置
  20. php内容管理系统 admini,网站内容管理系统BageCms

热门文章

  1. window当mac用,VirtualBox虚拟机安装os系统
  2. NET中dictionary的一个小坑
  3. html标签整合和css框架处理
  4. 【iCore2模块】VGA模块样板谍照!
  5. 高性能javascript学习总结(2)--DOM编程
  6. 基于TCP和多线程实现无线鼠标键盘-Socket(1)
  7. 转(每天淘汰你自己)
  8. 【maven】新建一个maven项目的基本配置
  9. Python数据类型之元祖
  10. centos上安装updatedb,command not found