LinuxShell脚本——选择结构

摘要:本文主要学习了Shell脚本中的选择结构。

if-else语句

基本语法

最简单的用法就是只使用if语句,它的语法格式为:

 if 条件
then
命令
fi

如果将if和then写在一行,则需要在then前面添加“;”:

 if 条件; then
命令
fi

如果有两个分支,就可以使用if-else语句,它的格式为:

 if 条件
then
命令1
else
命令2
fi

Shell支持任意数目的分支,当分支比较多时,可以使用if-elif-else-结构,它的格式为:

 if 条件1
then
命令1
elif 条件2
then
命令2
elif 条件3
then
命令3
...
else
命令n
fi

使用举例

最简单的使用案例,只有一个条件和一个命令:

 #!/bin/bash
read a
read b
if (( $a == $b ))
then
echo "a和b相等"
fi

根据条件执行不同的命令:

 #!/bin/bash
read a
read b
if (( $a == $b ))
then
echo "a和b相等"
else
echo "a和b不相等"
fi

当有多个条件需要判断时:

 #!/bin/bash
read a
if (( $a > ))
then
echo "优秀"
elif (( $a > ))
then
echo "良好"
elif (( $a > ))
then
echo "中等"
elif (( $a > ))
then
echo "及格"
else
echo "不及格"
fi

case-in语句

基本语法

表达式既可以是一个变量、一个数字、一个字符串,也可以是一个数学计算表达式,或者是命令的执行结果,只要能够得到确定的值就可以。

条件可以是一个数字、一个字符串,甚至是一个简单的正则表达式。

case会将表达式的值与多个条件逐个进行匹配:

 如果表达式的值和某个条件匹配成功,就会执行这个条件后面对应的所有语句,直到遇见双分号;;才停止;然后整个case语句就执行完了,程序会跳出case语句,执行esac后面的其它语句。
如果表达式的值没有匹配到任何一个条件,那么就执行*)后面的语句(符号“*”表示其它所有值),直到遇见双分号;;或者esac才结束。

语法格式如下:

 case 表达式 in
条件1)
命令1
;;
条件2)
命令2
;;
条件3)
命令3
;;
...
*)
命令n
esac

支持的正则表达式

case-in的条件部分支持简单的正则表达式,具体来说,可以使用以下几种格式:

 *:表示任意字符串。
[abc]:表示a、b、c三个字符中的任意一个。比如,[15ZH]表示1、、Z、H四个字符中的任意一个。
[m-n]:表示从m到n的任意一个字符。比如,[-]表示任意一个数字,[-9a-zA-Z]表示字母或数字。
|:表示多重选择,类似逻辑运算中的或运算。比如,abc|xyz表示匹配字符串“abc”或者“xyz”。

使用举例

 #!/bin/bash
read a
case $a in
)
"优秀";;
)
"良好";;
)
"一般";;
)
echo "及格";;
*)
echo "不及格"
esac

LinuxShell脚本——选择结构的更多相关文章

  1. LinuxShell脚本——循环结构

    LinuxShell脚本——循环结构 摘要:本文主要学习了Shell脚本中的循环结构. while循环 基本语法 while循环是最简单的一种循环,如果条件满足则执行循环里的语句,如果条件不满足则退出 ...

  2. shell编程中的 三种结构: 条件if/选择结构case/循环for/while/until等结构 和 函数的用法

    shell 函数的使用 (md中, 列表本身是有格式的, 他要产生缩进, 其次,列表项和列表项之间, 可以留有一个空行, 是合法的, 允许的) shell函数,就是 就相当于一个命令来看待和处理的, ...

  3. Linux-Shell脚本编程-学习-1-Linux基本命令

    在学习Linux-Shell脚本编程之前,我们需要学习一定的Linux基本命令,不然在后面学习Shell脚本编程的的时候,我们就呵呵了. 我学习所用的系统是Ubuntu 16.04版本 也没有什么规则 ...

  4. LinuxShell脚本——认识Shell脚本

    LinuxShell脚本——认识Shell脚本 摘要:本文主要介绍了Shell脚本的一些基本知识. 什么是Shell脚本 shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件, ...

  5. Shell基础(二):Shell中的数值运算、条件测试操作、使用if选择结构

    一.Shell中的数值运算 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 使用expr.$[ ].let等整数运算工具:定义变量X=1234,然后计算X与78 ...

  6. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

  7. C语言中的循环结构与选择结构

    1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...

  8. C- 流程控制(顺序结构,选择结构,循环结构)

    一.选择结构 1.if 特点: 同一时刻,只有一个大括号里面的代码会被执行 2,switch 特点 默认情况下,只有一个case后面的代码会被执行 如果一个case后面没有break,而且这个case ...

  9. 160809212田京诚C语言程序设计实验2 选择结构程序设计_进阶

    实验2-6 猜数字游戏 实验要求: 编写一个C程序实现一个[1-100]以内的猜数字游戏. (1)       系统随机产生一个[1-100]之间的随机数. (2)       输入任意一个数字.数字 ...

随机推荐

  1. jQuery 源码分析(二十) DOM操作模块 插入元素 详解

    jQuery的DOM操作模块封装了DOM模型的insertBefore().appendChild().removeChild().cloneNode().replaceChild()等原生方法.分为 ...

  2. C sharp #006# 委托与事件

    饮水思源:金老师的自学网站 索引 委托(Delegate) Click事件探究 委托(Delegate) “不学会委托(Delegate),等于没学.NET编程!” 例程1-委托类型变量 using ...

  3. VUE Error: listen EADDRNOTAVAIL: address not available

    vue项目运行npm run dev时出现 Error: listen EADDRNOTAVAIL: address not available ... 的错误 原因:配置的IP不对 解决方法:打开c ...

  4. .net Core数据的幕等性

    一.背景 代码实例:https://gitee.com/D_C_L/CurtainEtcAOP.git我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果. 例如: 1. 前 ...

  5. 简单实用的原生PHP分页类

    一款简单实用的原生PHP分页类,分页按钮样式简洁美观,页码多的时候显示“...”,也是挺多网站用的效果 核心分页代码 include_once("config.php"); req ...

  6. SSM框架之SpringMVC(2)参数绑定及自定义类型转换

    SpringMVC(2)参数绑定及自定义类型转换 1.请求参数的绑定 1.1. 请求参数的绑定说明 1.1.1.绑定机制 表单提交的数据都是k=v格式的 username=haha&passw ...

  7. JavaWeb开发——软件国际化(文本元素国际化)

    前几天围绕着JDBC编程进行了系统的学习.现在我们对Java程序数据库操作已经是轻车熟路了.也学会了使用各种框架来帮助我们简化编程. 今天是学习计划的第七天,虽然学习热情没有前几天高涨了.但是,写博客 ...

  8. SQL Server如何查看存储过程的执行计划

    有时候,我们需要查看存储过程的执行计划,那么我们有什么方式获取存储过程的历史执行计划或当前的执行计划呢? 下面总结一下获取存储过程的执行计划的方法. 1:我们可以通过下面脚本查看存储过程的执行计划,但 ...

  9. 并发编程~~~多线程~~~计算密集型 / IO密集型的效率, 多线程实现socket通信

    一 验证计算密集型 / IO密集型的效率 IO密集型: IO密集型: 单个进程的多线程的并发效率高. 计算密集型: 计算密集型: 多进程的并发并行效率高. 二 多线程实现socket通信 服务器端: ...

  10. 修改robotframework的元素定位方式,使之支持带括号的xpath定位方式

    今天困扰我的一个问题终于解决了 robot框架默认的xpth定位方式是不支持带括号运算的xpth表达式的,例如: (//*[@content-desc="iv_message_icon_21 ...