循环2-if与case语法
一、if语法结构
1. 单分支结构
if < 条件表达式 >
then
指令
fi
或者
if < 条件表达式 >;then
指令
fi
2. 双分支结构
if < 条件表达式 >
then
指令1
else
指令2
fi
3. 多分支结构
if < 条件表达式1 >
then
指令1
elif < 条件表达式2 >
then
指令2
elif < 条件表达式3 >
then
指令3
else
指令4
fi
条件表达式可以是test、[]、[[]]、(())等,也可以直接使用命令作为条件表达式
每个if语句都以if开头,并带有then,最后以fi结尾
多分支每个elif后也要带then,但else后不带then
4. 条件表达式和if语句的变换
符号条件表达式能够转换为if语句,如下
[ -f /etc/passwd ] && echo 1 || echo 0
等同于
if [ -f /etc/passwd ]
then
echo 1
else
echo 0
fi
其他条件表达式类似
二、case语句说明和语法
1. 说明
- case语句相当于多分枝的if/elif/else条件语句,但看起来更工整,常用于实现系统服务启动脚本等应用中
- case主要是写服务的启动脚本,适用范围较窄
- if取值判断、比较,应用面比case更广,几乎所有case语句都可以用if实现
2. 语法
case "变量" in
值1)
指令1...
;;
值2)
指令2...
;;
*)
指令3...
esac
说明:
- 如果变量的值等于值1时,则执行该值后面的指令1直到遇到
;;后停止,然后跳出case语句,执行case语句后面的其他指令 - 如果没有匹配到任何值,则执行
*)后面的指令,该指令通常是提示用户的指令,最后一个值可以省略双分号 - 表达式值支持管道、正则等多功能匹配
3. 简单实践
根据用户输入判断用户输入的哪个数值,并输出,如果非数值,则提示错误
cat /server/scripts/b7.sh
#!/bin/bash
read -p "pls input num[1-9]" num
case "$num" in
1)
echo "the num is 1"
;;
2)
echo "the num is 2"
;;
[3-9])
echo "the num is $num"
;;
*)
echo "pls input num,3q"
esac
执行脚本查看结果:
sh /server/scripts/b7.sh
pls input num[1-9]1
the num is 1sh /server/scripts/b7.sh
pls input num[1-9]3
the num is 3sh /server/scripts/b7.sh
pls input num[1-9]g
pls input num,3q
循环2-if与case语法的更多相关文章
- case语法练习脚本之判断
case语法练习脚本之判断 #!/bin/bash read -p "请输入一个字符,并按enter键确认:" key case "$key" in [a-z] ...
- bash 中的case语法
CASE语法格式备忘 case $variable-name in pattern1) command1 ... .... commandN ;; pattern2|pattern3|pattern4 ...
- Shell case语法结构解析
case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 ...
- Verilog RTL优化策略(一):推荐使用assign语法替代if-else和case语法
参考 <手把手教你设计CPU--RISC-V处理器篇> 先给出不用if-else和case的原因 Verilog中的if-else和case语法存在两大缺点: 不能传播不定态X: 会产生优 ...
- HiSql 实现case语法操作 新一代无实体ORM框架
HiSql 实现case语法操作 在SqlServer,Oralce,Hana,PostGreSql,MySql 这些数据都支持SQL case语法,平常在实现业务开发中也会常用到,那么HiSql对于 ...
- Shell基础(三):使用for循环结构、使用while循环结构、基于case分支编写脚本、使用Shell函数、中断及退出
一.使用for循环结构 目标: 本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下: 1> 对192.168.4.0/24网段执行 ...
- SQL Server高级内容之case语法函数
1.Case函数的用法 (1)使用类似:switch-case与if-else if. (2)语法: case [字段] when 表达式 then 显示数据 when 表达式 then 显示数据 ...
- [lua]尝试一种Case语法糖
function CaseT(arg) function proxy(caller) caller.yield(r) end -- proxy return function (cond) if (c ...
- case语法2
case流程控制语句在linux中有其独到的一面,使得在编程过程中能够在脚本编写的过程中具备多个选项功能,使其功能多样化,其具备简单,快速的特点. 一.case流程语句结构图 根据流程图可以知道,在所 ...
- case语法
一.文件系统访问列表 FACL :Filesystem Access Control List 文件系统访问列表 利用文件扩展保存额外的访问控制权限. setfacl: -m:设定访问控制权限 ...
随机推荐
- 安装archlinux系统
archlinux iso文件下载站点这个iso文件需要保证较新,否则其中的比如libcap的验证密钥过时无法在系统里安装软件包.比如2022年10月7日安装0601版本iso无法通过linux等软件 ...
- Linux系统Shell脚本第三章:for、while循环及脚本实操
目录 一.echo命令 二.查看当前系统的时间-date命令 三.for循环语句 四.while循环语句结构(迭代) 五.until 循环语句结构 六.continue和break 一.echo命令 ...
- 我的vim配置相关
谨以此文记录下之前的折腾.(后续可能还会折腾什么) 目标 我的目的很简单,就是希望能有一个启动快速的文本编辑器,可以简单的代码着色,vim键位,简单的文本修改,打开大点的文件不发愁,可以简单的form ...
- vue3.0学习笔记
vue3转vue2: https://vue-next-template-explorer.netlify.app/ 1. Vue3.0六大两点 Performance:性能比Vue2.x快1.2~2 ...
- java心形打印999
心形打印999 农历七月初七,七夕节也就是中国民间版的所谓情人节,利用java打印心型999个图案可以让程序员更浪漫一些.现在下面由小编简要的说一下如何做到.首先下面是打印心形但却不是999个的代码, ...
- ThreadMBean
package com.google.thread3; import java.lang.management.ManagementFactory; import java.lang.manageme ...
- Microsoft Project 使用教程
Microsoft Project使用教程 一.新建项目 1. Project界面操作 "文件" -→ "新建" -→ "空白项目" 建议在 ...
- K8S群集调度器
目录: 调度约束 Pod启动典型创建过程 调度过程 Predicate常见的算法 常见的优先级选项 指定调度节点 亲和性 键值运算关系 Pod亲和性和反亲和性 污点和容忍 污点 容忍 其他注意事项 c ...
- nodejs配合jwt
使用npm下载包: npm i jsonwebtoken --save 引入此包: const jsonwebtoken =require('jsonwebtoken'); JWT的组成: JWT由三 ...
- IDEA中常见问题
idea中不存在.iml文件项目主目录下执行命令行mvn idea:module