Shell编程之条件语句

Posted 正在迷途

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell编程之条件语句相关的知识,希望对你有一定的参考价值。

一、条件测试

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,返回值为非0值(假false)时表示失败或异常

1.测试命令 test

test命令可以对特定条件进行测试,并根据返回值来判断条件是否成立($?返回值为0表示条件成立)

格式1:test  条件表达式

格式2:[ 条件表达式 ]          方括号 [ 或 ] 与条件表达式之间至少要一个空格进行分割

2.文件测试

格式:[    操作符 文件或目录    ]

常用的操作符

-e

测试目录或文件是否存在(Exist)

-d

测试是否为目录(Directory)

-f

测试是否为文件(File)

-r

测试当前用户是否有权限读取(Read)

-w

测试当前用户是否有权限写入(Write)

-x

测试是否设置有可执行(Excute)权限

-L

测试是否为符号链接

Shell编程之条件语句_case分支语句

3.整数值比较

根据给定的两个整数值,判断前后关系,比如大、小,或等于

格式:[   整数1  操作符  整数2 ]

常用的测试操作符

-eq

等于(Equal)                  (==)

-ne

不等于(Not Equal)         (!=)

-gt

大于(Greater Than)         (\\<)

-lt

小于(Lesser Than)           (\\>)

-le

小于或等于(Lesser or Equal)

-ge

大于或等于(Greater or Equal)

Shell编程之条件语句_命令_02

Shell编程之条件语句_命令_03

示例:判断当前可用空闲内存(free)大小,若当前内存小于500MB,则建议及时清理

Shell编程之条件语句_if语句_04

free  以kb单位显示

free -m 以MB为单位

free -h 仅centos7可用

4.字符串比较

格式1:[字符串1 = 字符串2 ]            格式2:[ -z 字符串 ]

常用的测试操作符

=

字符内容相同

!=

字符内容不同,!号表示取反,相反的意思

-z

检测字符串是否为空,对于未定义或赋予空值的变量将视为空串

Shell编程之条件语句_case分支语句_05

Shell编程之条件语句_命令_06

5.逻辑测试

  • 判断两个或多个条件之间的依赖关系
  • 当系统任务取决于多个不同的条件的时候,判断是根据这些条件同时成立还是只要其中一个成立等情况

基本格式:

  • 格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...
  • 格式2:命令1 操作符 命令2 ...

常用的测试操作符

  • -a或&&:逻辑与,"而且"的意思
  • -o或||:逻辑或,"或者"的意思
  • !:逻辑否

Shell编程之条件语句_命令_07

2.if语句

1.单分支语句

Shell编程之条件语句_case分支语句_08

格式:

if 条件测试操作
then 命令序列
fi

示例

Shell编程之条件语句_命令_09

Shell编程之条件语句_if语句_10

Shell编程之条件语句_case分支语句_11

2.双分支结构

Shell编程之条件语句_case分支语句_12

格式:

if 条件测试操作
then 命令序列1
else 命令序列2
  • 若条件成立,则执行then后面的命令,忽略else,直到fi结束
  • 若条件不成立,则忽略then,跳至else后面的命令序列执行,直到fi结束

示例

Shell编程之条件语句_case分支语句_13

Shell编程之条件语句_命令_14

3.多分支语句

Shell编程之条件语句_case分支语句_15

格式:

if 条件测试操作
then 命令序列
elif 条件测试操作2
then 命令序列2
else
命令序列3

示例

Shell编程之条件语句_命令_16

Shell编程之条件语句_if语句_17

三、case分支语句


  • case语句主要用于以下场景:当每个变量存在多种取值时,需要对其中的每一种取值分别执行不同的命令序列
  • if语句是要判断多个不同条件,而case判断一个变量的不同取值

Shell编程之条件语句_if语句_18

格式:

case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
....
*)
默认命令序列
  • case行尾必须为单词 in ,每一行必须以括号 )结束
  • 双分号 ;; 表示命令序列结束
  • 可以用方括号[]表示一个连续的范围;还可以用 | 表示,比如“A|B”
  • 最后的 *) 表示默认模式,如果以上取值都不相同,则执行此行

Shell编程之条件语句_命令_19

Shell编程之条件语句_case分支语句_20

以上是关于Shell编程之条件语句的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程之条件语句——if语句case语句

if语句 条件测试 shell编程之条件语句

Shell编程之条件语句

shell if 语句

Shell编程Shell中的流程控制之if语句

shell编程之条件语句