if 条件语句

1. 概述

在shell的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时候也会与 if 等条件语句相结合,来完成测试判断,以减少程序运行错误。

2. 文件测试
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或
者判断文件是否存在,是否可读、可写、可执行等

文件测试操作符 说明
-d 测试是否为目录(Directory)
-e 测试目录或者文件是否存在(Exist)
-f 测试是否为文件(File)
-L 测试是否为链接文件
-b 测试是否为设备文件
-c 测试是否为字符设备文件
-r 测试当前用户是否有权读取
-w 测试当前用户是否有权写入
-x 测试是否设置有可执行权限
-s 测试存在且文件大小为空
-a、&& 逻辑与,且
-o 、|| 逻辑或,或
-n 测试是否为非空
-z 测试是否为空值

条件测试格式
条件测试语句 说明
test 测试表达式 利用test命令进行条件测试表达式的方法
[ 测试表达式 ] 通过[ ]进行条件测试表达式的方法,和test命 令用法相同
[[ 测试表达式 ]] 通过[[ ]]进行条件测试表达式的方法,比test和[ ]更新
(( 测试表达式 )) 通过(())进行条件测试表达式的方法,一般用于if语句里
注:(())不能用于文件测试,文件测试一般常用的是 []
不分主次,按顺序逐个判断,判断的是前面的结果

逻辑测试
&& 如果前面是正确的,执行
|| 如果前面是错误的,执行
; 挨个儿执行

[ -n str1 ] #检查str1的长度是否非0
[ -z str1 ] #检查str1的长度是否为0

3.整数值比较
整数值比较指的是根据给定的两个整数值,判断第一个数与第二 个数的关系,如是否大于、等于、小于第二个数实际应用非常广泛

参数 含义
-eq 第一个数等于第二个数
-ne 第一个数不等于第二个数
-gt 第一个数大于第二个数
-lt 第一个数小于第二个数
-le 第一个数小于或等于第二个数
-ge 第一个数大于或等于第二个数

4. if 条件语句

4.1 单分支

只有在“条件成立”时,才会执行相应的代码

if [条件判断];then
command
fi

#或

if [条件判断]
then
command
fi

4.2 多分支

嵌套使用,进行多次判断

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

5.字符串比较

字符串比较
比较 说明
str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不同
str1 < str2 检查str1是否比str2小
str1 > str2 检查str1是否比str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0

注意:

没有被定义的字符串长度默认为0

test比较字符串相等性时会将所有的标点和大写也考虑在内

字符串大小的比较遵循字典顺序,规则如下:

1.如果第一个字符串是第二个字符串的前缀,那么第一个小(比如a小于about)
2.从字符串的开头比较,按照字母顺序,a比b小(比如about小于ball)
3.如果第一个字符相同,再比较第二个(比如about小于above)

#!/bin/bash

val1=lookat
val2=look
#大于小于符号必须转义
#否则shell会把它们当作重定向
if [ $val1 \> $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

case 条件语句

case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
case需要一个esac(就是case反过来)作为结束标记,每个case分支用右圆括号,用两个分号表示break,其中“;;”不是跳出循环,是不在去匹配下面的模式

子句含右圆括号 " ) " 部分开始。
子句结束符号
" ;; " :’ 结束 ’ ,以两个分号结尾,表示只执行当前子句中的关联命令,相当于执行后直接 结束。
" ;;& " : ’ 继续匹配 ’ ,以两个分号与连字符结尾,表示当前子句的关联命令执行后,会继续去 匹配 后面子句,并执行关联的命令。
" ;& " : ’ 继续执行 ’ ,继续执行下个子句的关联命令,不论是否匹配。
case 语句 以 " case " 结束。
语法格式
case 变量值 in
分支1)
action1
;;
分支2)
action2
;;
*)
action3
esac

shell—if + case条件语句的更多相关文章

  1. shell脚本中的case条件语句介绍和使用案例

    #前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句.case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,ca ...

  2. Shell编程之条件语句:if、case语句

    Shell编程之条件语句:if.case语句               一.条件测试                1)test命令测试                2)整数值比较         ...

  3. 『忘了再学』Shell流程控制 — 35、多分支case条件语句

    目录 1.case条件语句介绍 2.case语句需要注意的内容 3.练习 示例1 示例2 1.case条件语句介绍 case语句和if-elif-else语句一样都是多分支条件语句,不过和if多分支条 ...

  4. 转 功能强大的shell:if条件语句

    原文 http://blog.zol.com.cn/2322/article_2321767.html 功能强大的shell:if条件语句 if语句测试条件,测试条件返回真(0)或假(1)后,可相应执 ...

  5. 02 shell编程之条件语句

    Shell编程之条件语句 学习目标: 掌握shell脚本条件测试 掌握if语句编程 目录结构: 条件测试 条件测试概述 l  对特定的条件进行判断,以决定如何执行操作 l  测试的方法 方法1:tes ...

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

    shell 编程之条件语句一.条件测试  ① test命令 测试  ② 文件测试  ③ 整数值比较  ④ 字符串比较  ⑤ 逻辑测试二.if语句的结构  单分支结构  双分支结构  多分支结构三.ca ...

  7. 关于Switch case条件语句中无break的用法

    关于Switch case条件语句的另类用法       今天在拜读一位前辈的程序时,遇到了这样一段程序: /***************************/ switch(operation ...

  8. JavaScript case 条件语句

    JavaScript case 条件语句 示例 switch(name){ case '1': age = 123; break; case '2' age = 456; break; default ...

  9. shell编程之条件语句

    目录: 一.条件测试 1.test命令测试 2.文件测试 3.字符串比较 4.逻辑测试 二.if语句 1.if单分支语句 2.if双分支语句 3.if多分支语句 三.case语句 case多分支语句 ...

  10. asp.net select Case条件语句的使用方法

    原文:http://www.111cn.net/net/vb-net/38548.htm 如果 testexpression 与任何 Case expressionlist 表达式匹配 ,则执行此 C ...

随机推荐

  1. OPTIRRA研究: TNF拮抗剂维持期优化减量方案[EULAR2015_SAT0150]

    OPTIRRA研究: TNF拮抗剂维持期优化减量方案   SAT0150 OPTIMISING TREATMENT WITH TNF INHIBITORS IN RHEUMATOID ARTHRITI ...

  2. 置顶TOP

    HTML <a href="javascript:void(0)" class="go-top" @click="goTop"> ...

  3. windows 服务删除或停止

    1.命令行删除 cmd 管理员模式 net start 服务名   开启服务   net stop 服务名   停止服务   sc delete 服务名      删除服务      sc confi ...

  4. chm文档生成->Sandcastle使用帮助

    1.介绍 Sandcastle是微软提供的开源的,用于生成.net文档帮助的工具. 源代码路径:https://github.com/EWSoftware/SHFB,进去后能找到Relase版本的路径 ...

  5. TypeError: unsupported operand type(s) for |=: 'dict' and 'dict'

    原因:python3.9 支持对 dict 类型使用 |, 而较老的版本不支持 解决方案 :1. 用更新的 python 2. 把 | 操作替换成 {**d1, **d2} 来源:https://st ...

  6. xlwings rest api

    https://pbihub.cn/blog/964/created_at https://docs.xlwings.org/zh_CN/latest/rest_api.html xlwings &g ...

  7. [UnityShader]unity中2D Sprite显示阴影和接受阴影

    首先是效果 要让2D显示阴影,首先假设知道Unity阴影来源(shader中的ShadowCaster) 最简单的方法是,首先从官网下载Sprite-Default.Shader,查看源码 然后复制粘 ...

  8. oracle锁表,java代码修改方式如下

    select b.owner,b.object_name,a.session_id,a.locked_modefrom v$locked_object a,dba_objects bwhere b.o ...

  9. 下载nvm并安装vue环境

    nvm下载地址 https://github.com/coreybutler/nvm-windows/releases 直接下载 nvm-setup.zip 到任意文件夹下,双击安装 安装过程会提示 ...

  10. 浅谈flume

    flume做日志收集的工具,将数据源导入到指定目标中.flume之间可以相互连接组件    source:如何从数据源中取数据,可以认为是两种主动source(主动取数据)和被动source(推给so ...