Linux | shell脚本-比较判断和运算语句

一、简介

在我们写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=i2 ----> 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

原文地址:https://blog.51cto.com/13475644/2400518

时间: 2024-10-18 05:00:09

Linux | shell脚本-比较判断和运算语句的相关文章

Linux | shell脚本-条件判断if和循环语句for

一.简介 上个章节中,我们学习了判断语句和运算语句.shell脚本中,这些判断语句一般都是和if.else.elif.for和while等语句一起使用. 在脚本编写中,条件判断语句常常用于多种情况的判断,符合哪一种情况就执行哪一种的命令. 二.shell条件判断语句:if 1.流程控制:if单分支结构 语法: if 条件判断:then 条件判断成功时执行的操作 ... fi 例子: 结合整数值比较-eq:检查主机是否在线 vim test1.sh运行结果:2.流程控制:if双分支结构 语法: i

Linux shell的条件判断、循环语句及实例

shell条件判断的两个特殊设备 /dev/null linux系统的空设备,也称为位桶,任何写入其中的数据均会被丢弃当你不想将标准化输出显示或者保存至文件时可以将文件从定向到/dev/null 禁止标准化输出 cat $filename > /dev/null 禁止标准化错误 rm $filename > /dev/null /dev/zero Linux的输入设备,可以用他初始化文件,可以无限制输出0, 另一个作用是用0去填充一个指定大小的文件 在条件判断语句中&&表示an

Linux Shell脚本条件判断

Shell条件判断 if list then           do something here elif list then do another thing here else do something else here fi  EX1: #!/bin/sh SYSTEM=`uname -s`    #获取操作系统类型,我本地是linux if [ $SYSTEM = "Linux" ] ; then     #如果是linux的话打印linux字符串 echo "

Linux shell脚本编程入门(二) 循环语句

前面有了变量的概念和逻辑运算符,就可以写判断语句了,不过这里注意中括号的两边必须得留空格,不然报错. 运算符 赋值, 用 let 语句, 如 let "a=1" 算数运算, 支持 +  -  *  /  %(模运算)  **(幂运算) 位运算符, 支持 <<(左移)  >>(右移)  &(按位与)  |(按位或)  ~(按位取反)  ^(按位异或) if / then / else 语句 先举个栗子呗~ #!/bin/bash read var1 if

Linux Shell脚本 几种循环语句创建用户的方法

大家好,我是孤云暮雨,今天给大家带来的是"Linux Shell脚本 几种循环语句创建用户的方法" 添加user1-user20用户 for循环: #!/bin/bash for i in {1..20} do useradd user$i echo "user$i Users to add success" done for循环(C风格): #!/bin/bash for ((i=1;i<=20;i++)) do useradd user$i &&a

Linux shell脚本判断服务器网络是否可以上网

Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www.baidu.com,从而判断服务器网络状态是否可以畅通的 网络状态判断 #!/bin/bash #检测网络链接畅通 function network() { #超时时间 local timeout=1 #目标网站 local target=www.baidu.com #获取响应状态码 local

Linux Shell脚本编程while语句

Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo    uptime    sleep 3done 2,把监控结果保存到文件,在后台执行,然后用tail -f监控文件变化[email protected]:~/linux/shell/flow_control$ sh while.sh &[1] 12867 #!/bin/bash while truedo    uptime >> log.txt    s

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux shell脚本流程控制

博主搬家至51CTO,初来乍到,请多指教. 此次我们来通过实例解析Linux shell脚本流程控制 Linux shell脚本流程控制可分为三类:顺序执行,条件选择执行,循环执行 顺序执行:简单理解就是逐行执行脚本内容,逐行解读,逐行执行.(此处不做实例解析) 条件选择执行:可以理解为先进行某一条件的判断选择,再决定执行怎样的脚本内容.常见语句if case 条件选择语句:if if语句用法: 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件