shell—if + case条件语句
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条件语句的更多相关文章
- shell脚本中的case条件语句介绍和使用案例
#前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句.case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,ca ...
- Shell编程之条件语句:if、case语句
Shell编程之条件语句:if.case语句 一.条件测试 1)test命令测试 2)整数值比较 ...
- 『忘了再学』Shell流程控制 — 35、多分支case条件语句
目录 1.case条件语句介绍 2.case语句需要注意的内容 3.练习 示例1 示例2 1.case条件语句介绍 case语句和if-elif-else语句一样都是多分支条件语句,不过和if多分支条 ...
- 转 功能强大的shell:if条件语句
原文 http://blog.zol.com.cn/2322/article_2321767.html 功能强大的shell:if条件语句 if语句测试条件,测试条件返回真(0)或假(1)后,可相应执 ...
- 02 shell编程之条件语句
Shell编程之条件语句 学习目标: 掌握shell脚本条件测试 掌握if语句编程 目录结构: 条件测试 条件测试概述 l 对特定的条件进行判断,以决定如何执行操作 l 测试的方法 方法1:tes ...
- if语句 条件测试 shell编程之条件语句
shell 编程之条件语句一.条件测试 ① test命令 测试 ② 文件测试 ③ 整数值比较 ④ 字符串比较 ⑤ 逻辑测试二.if语句的结构 单分支结构 双分支结构 多分支结构三.ca ...
- 关于Switch case条件语句中无break的用法
关于Switch case条件语句的另类用法 今天在拜读一位前辈的程序时,遇到了这样一段程序: /***************************/ switch(operation ...
- JavaScript case 条件语句
JavaScript case 条件语句 示例 switch(name){ case '1': age = 123; break; case '2' age = 456; break; default ...
- shell编程之条件语句
目录: 一.条件测试 1.test命令测试 2.文件测试 3.字符串比较 4.逻辑测试 二.if语句 1.if单分支语句 2.if双分支语句 3.if多分支语句 三.case语句 case多分支语句 ...
- asp.net select Case条件语句的使用方法
原文:http://www.111cn.net/net/vb-net/38548.htm 如果 testexpression 与任何 Case expressionlist 表达式匹配 ,则执行此 C ...
随机推荐
- 内网安全之:黄金&白银票据传递域控制器权限维持
内网安全之:黄金&白银票据传递域控制器权限维持 目录 内网安全之:黄金&白银票据传递域控制器权限维持 1 Golden Ticket 1.1 导出 krbtgt 的 NTLM Hash ...
- 跳板攻击之:frp代理转发
跳板攻击之:frp代理转发 目录 跳板攻击之:frp代理转发 1 frp 介绍 2 frp 原理 3 实验环境 3.1 实验准备 3.2 实验拓扑 4 frp代理socks 5 frp代理stcp安全 ...
- CenterOS7上搭建RabbitMQ集群
1 保证多个主机之间能够互相访问 修改host , vi /etc/hosts 例如修改成下面的内容: 192.168.10.157 rabbitmq-1 192.168.10.159 rabbitm ...
- Python 01-Unittest的使用 unittest简单应用
class TestCase01(unittest.TestCase): def setUp(self): print("用例开始") def te ...
- pytho获取C函数返回值
python调用C语言接口 注:本文所有示例介绍基于linux平台 在底层开发中,一般是使用C或者C++,但是有时候为了开发效率或者在写测试脚本的时候,会经常使用到python,所以这就涉及到一个问题 ...
- 将 ChatGPT 接入 Zabbix 为告警提供修复建议(对接钉钉)
1.如果接企业微信请参考下面的文章 https://www.txisfine.cn/archives/9c078bb7.html 感谢上述文章的作者提供的思路 ChatGPT 是最近很火的 AI 智能 ...
- php中的错误异常处理
作者:小涵 | 阅读: 1636 在PHP5中添加了类似于其它语言的错误异常处理模块.在PHP代码中所产生的异常可被throw语句抛出并被catch语句捕获.需要进行异常处理的代码都必须放入 在PH ...
- 如何使用源码编译安装Nginx服务器
安装 PCRE : 网站:http://pcre.org/ 下载: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ ftp://ftp.c ...
- 2022年了!还在用定时器实现动画?赶紧试试requestAnimationFrame吧!
前言 作为一名前端开发者,相信你一定接触过动画.还记得最开始学习前端时,我们曾尝试使用 JS 实现各种动画效果,比如轮播图等等.随着前端技术的不断更新,我们实现动画的方式变得多种多样了,比如使用JS. ...
- 若依gateway
1.若依后端gateway模块配置白名单 顾名思义,就是允许访问的地址.且无需登录就能访问.在ignore中设置whites,表示允许匿名访问. 2. SpringCloud Gateway网关配置( ...