if...elif...else...fi和case...esac的脚本条件判断式

注意1: if 表达式和case 表达式的区别及什么时候使用哪个要有明确的区分?

  『 if .... then .... fi 』对于变量的判断是以『比对』的方式来分辨的, 如果符合状态就进行某些行为,并且透过较多层次 (就是elif ) 的方式来进行多个变量的程序代码撰写(针对性不强,范围大的时候使用)。

  『 case ... in .... esac』 使用在变量的内容已经既定,就只有几个选择的时候使用(具有很强的正对性);

注意1:脚本中,变量的下达方式是怎么样的呢?

  直接下达方式: 在执行脚本的时候后面加上参数($1,$2......)   如: ./xx.sh 参数1 参数2 .....

  交互式下达方式:通过 read 这个指令来让用户输入变量的内容。 

 

一『 if .... then .... fi 』的使用基本方法

1、单一的条件判断式:

    语法:

if [ 条件判断式 ]; then当条件判断式成立时,可以进行的指令工作内容;
fi                             //将if反过来写,就是结束if之意!

  

  && 代表 AND 
  || 代表 or 

forexample:

#!/bin/bash
set -x                          //进行查错功能
#program;
#    This program shows the user's choice
#History:
#2017/06/21 likui First release PATH=/bin:/sbin:/uer/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/bin export PATH read -p "Please input (Y/y)" yn if [ "$yn" == "Y" ] || [ "$yn" = "y" ]; then echo "OK,continue"                  //if 和 if 之间添加我们需要的代码 exit 0 fi if [ "$yn" == "N" ] || [ "$yn" == "n" ]; then echo "Oh,interrupt!" exit 0 fi echo "I don't know what your choice is "

 

2、多重、复杂条件判断式

  语法1:

 

# 一个条件判断,分成功进行与失败进行 (else)
if [ 条件判断式 ]; then当条件判断式成立时,可以进行的指令工作内容 else当条件判断式不成立时,可以进行的指令工作内容 fi

  语法2:

# 多个条件判断 (if ... elif ... elif ... else) 分多种不同情况执行
if [ 条件判断式一 ]; then当条件判断式一成立时,可以进行的指令工作内容 elif [ 条件判断式二 ]; then当条件判断式二成立时,可以进行的指令工作内容 else当条件判断式一与二均不成立时,可以进行的指令工作内容; fi

forexample1:

  

forexample2:

forexample3:

#!/bin/bash
# Program:
#  You input your demobilization date, I calculate how many days
#  before you demobilize.
# History:
# 2005/08/29  VBird  First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~
/bin
export PATH
# 1. 告知用户这支程序的用途,并且告知应该如何输入日期格式?
echo "This program will try to calculate :"
echo "How many days before your demobilization date..." read -p "Please input your demobilization date (YYYYMMDD ex>20090401): " date2 # 2. 测试一下,这个输入的内容是否正确?利用正规表示法啰~ date_d=$(echo $date2 |grep '[0-9]\{8\}') # 看看是否有八个数字 if [ "$date_d" == "" ]; then   echo "You input the wrong date format...."   exit 1 fi # 3. 开始计算日期啰~ declare -i date_dem=`date --date="$date2" +%s` # 退伍日期秒数 declare -i date_now=`date +%s` # 现在日期秒数 declare -i date_total_s=$(($date_dem-$date_now)) # 剩余秒数统计 declare -i date_d=$(($date_total_s/60/60/24)) # 转为日数 if [ "$date_total_s" -lt "0" ]; then # 判断是否已退伍   echo "You had been demobilization before: " $((-1*$date_d)) "   ago" else declare -i date_h=$(($(($date_total_s-$date_d*60*60*24))/60/60))   echo "You will demobilize after $date_d days and $date_h hours." fi

 

二、『 case ... in .... esac』的基本用法:

 1、单一的case条件判断式:

    基础语法:

case $变量名称 in                 //关键词为 case ,还有变数前有钱字号"第一个变量内容")                //每个变量内容建议用双引号括起来,关键词则为小括号 )程序段;;                     //每个类别结尾使用两个连续的"第二个变量内容")程序段;;*)                       //最后一个变量内容都会用 *                          程序段                   //来代表所有其他值不包含第一个变量内容与第二个变量内容的其他程序执行段;; 
esac 

forexample:

forexample2:   变量的2种下达方式的程序代码

 

 

 

  

转载于:https://www.cnblogs.com/Panda-lk/p/9208129.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓自定义View进阶-分类与流程

自定义View绘制流程函数调用链(简化版) 一.自定义View分类 我将自定义View分为了两类(sloop个人分类法,非官方): 1.自定义ViewGroup 自定义ViewGroup一般是利用现有的组件根据特定的布局方式来组成新的组件,大多继承自ViewGroup或各种Layout&…

【笔试记录】2021/3/13美团

2021/3/13美团笔试 1.旋转二维数组 m, n map(int, input().split()) a [] for _ in range(m):a.append(list(map(int, input().split()))) for j in range(n):for k in range(m):print(a[k][j], end )print(end\n)输入输出 2.找出输入字符串中的所有数字 s input() n …

学成在线--9.页面静态化

文章目录一.页面静态化流程二.数据模型1.轮播图DataUrl接口1)需求分析2)接口定义3)Dao4)Service5)Controller6)测试2.远程请求接口1)添加依赖2)配置RestTemplate3)测试Re…

数据库MySQL/mariadb知识点——日志记录(2)二进制日志

二进制日志 记录已提交事务导致数据改变或潜在导致数据改变的SQL语句,通过“重放”日志文件中的事件来生成数据副本,不依赖存储引擎类型。 开启二进制日志,默认是关闭的,二进制日志和数据分开存放 开启记录二进制文件的功能&#…

【面试记录】Python常见面试200题及答案总结

Python常见面试200题及答案总结 /待完善/ 1. 列出5个常用python标准库? os:提供了不少与操作系统相关联的函数,提供了一种可移植的使用操作系统功能的方法。使用os模块中提供的接口,可实现跨平台访问。但是,并不是所…

Linux负载均衡软件LVS之一(概念篇)

2019独角兽企业重金招聘Python工程师标准>>> 一、 LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分…

学成在线--10.页面预览

文章目录一.需求分析二. 搭建环境1.在cms服务中集成freemarker:2.在application.yml配置freemarker三.Service四.Controller五.页面预览测试-- 配置Nginx代理六.页面预览测试-- 添加“页面预览”链接一.需求分析 页面在发布前增加页面预览的步骤,方便用…

【代码刷题】排序算法总结(python实现)

排序算法总结(Python实现)算法介绍算法分类相关概念1. 冒泡排序(Bubble Sort)1.1 思想1.2 python实现1.3 复杂度1.4 稳定性2. 快速排序(Quick Sort)2.1 思想(伪代码)2.2 python实现2…

学成在线--11.RabbitMQ快速入门

文章目录一.RabbitMQ简介二.相关知识1.AMQP2.JMS是什么 ?三.RabbitMQ的工作原理四.Hello World1.创建Maven工程2.生产者3.消费者五.总结一.RabbitMQ简介 MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP…

maven工程建立和SSM(springMVC+spring+mybatis)整合

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.环境: maven 版本:3.5.1 ecelipse mars.2 JDK : jdk1.8.0_45 tomcat : apache-tomcat-8.0.0-RC1 2. 建…

Java——网络编程(实现基于命令行的多人聊天室)

2019独角兽企业重金招聘Python工程师标准>>> 目录: 1.ISO和TCP/IP分层模型 2.IP协议 3.TCP/UDP协议 4.基于TCP的网络编程 5.基于UDP的网络编程 6.基于TCP的多线程的聊天室的实现 1.ISO和TCP/IP分层模型: OSI分层模型(Open System …

一网打尽中文编码转换---6种编码30个方向的转换

一网打尽中文编码转换——6种编码30个方向的转换 1.问题提出 在学编程序时,曾经有人问过“你可以编一个记事本程序吗?”当时很不屑一顾,但是随着学习MFC的深入,了解到记事本程序也并非易事,难点就是四种编码之间的转换。 对于编…

十万服务器秒级管控 腾讯云如何将AIOps用于日常管理?

AIOps,是指基于算法的 IT运维(Algorithmic IT Operations),由 Gartner定义的新类别,源自业界之前所说的 ITOA(IT Operations and Analytics)。我们已经到达了这样的一个时代,数据科学…

ssm(springMVC + spring+MyBatis) 小例

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 整体环境参见本人另一文:http://blog.csdn.net/jiangyu1013/article/details/51983360 此工程访问入口为index.jsp页面. 工…

学成在线--13.RabbitMQ工作模式

文章目录一.Work queues二.Publish/subscribe1.工作模式2.代码1)生产者2)消费者3.测试4.思考三.Routing1.工作模式2.代码1)生产者2)消费者3.测试4.思考四.Topics1.工作模式2.代码1)生产者2)消费者3.测试4.思…

《C++字符串完全指南——第一部分:win32 字符编码》

《C字符串完全指南--第一部分:win32 字符编码》 原作者:Michael Dun 译 者:Dingqiao Wang 引言 毫无疑问,你肯定见过像TCHAR, std::string, BSTR等等这类字符串类型.也包括一些以_tcs开头的奇怪的宏。也许你正盯着屏幕"哇哇"的发愁,然…

学成在线--14.使用RabbitMQ完成页面发布

文章目录一.技术方案二.页面发布——消费方1.需求分析2.创建Cms Client工程1)创建maven工程2)配置文件3)启动类3.RabbitmqConfig配置类4.定义消息格式5.PageDao1)使用CmsPageRepository 查询页面信息2)使用CmsSiteRepo…

Log4J日志配置详解

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 一、Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日…

中文编码杂谈

编码问题的例子 在windows自带的notepad(记事本)程序中输入“联通”两个字,保存后再次打开,会发现“联通”不见了,代之以“”的乱码。这是windows平台上典型的中文编码问题。即文件保存的时候是按照ANSI编码&#xff…

easyUI 日期控件修改...

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 个人觉得easyUI挺好用的。 它的中文文档地址: http://www.zi-han.net/case/easyui/ 日期本来效果是这样的: 改…