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
if...elif...else...fi和case...esac的脚本条件判断式相关推荐
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C) 文章目录 求1+2+3+...+n,要求不能使用乘除法.for ...
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). //利用构造函数求解 /*class Temp{ pub ...
- 【OJ - 基础数学】求1+2+3+...+n(不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句)
文章目录 OJ - 求1+2+3+...+n 解题思路 OJ - 求1+2+3+-+n 题目难度:中等 OJ链接:求1+2+3+-+n__牛客网 (nowcoder.com) 题目描述: 求1+2+3 ...
- SQL利用Case When Then多条件判断
Select top 100 State,JoinState, (case when State=1 and Joinstate=0 then 2 when State=1 and JoinStat ...
- SQL小知识011:利用Case When Then多条件判断与分类统计
case具有两种格式.简单case函数和case搜索函数. --简单case函数 case sex when 'M' then '男' when 'F' then '女' else ...
- [Shell]条件判断与流程控制:if, case, for, while, until
[条件判断] 1. 按文件类型进行判断 -b 文件 判断该文件是否存在,并且为块设备文件(是块设备文件为真) -c 文件 判断该文件是否存在,并且为字符设备文件(是字符设备文件为真) -d ...
- shell基础--条件判断if和case
目录 一.条件判断 1.按照文件类型进行判断 2.按照文件权限进行判断 3.两个文件之间进行比较 4.两个整数之间比较 5.字符串的判断 6.多重条件判断 二.if条件判断 1.单分支if条件语句 2 ...
- kettle中的switch_kettle 条件判断 Switch Case
kettle 条件判断 Switch Case kettle 条件判断 Switch Case 介绍 Switch / Case,顾名思义,类似 Java 中的 Switch / Case,用于进行条 ...
- Linux学习 分支(if-then fi, if then elif then fi, case in );;easc
1.if-then语句 if command then commands fi 如果command执行成功,exit 0的话 then条件成立,then 内的命令执行. 2.if-then-else ...
最新文章
- poj3694(双联通分量+LCA)
- 如何从KDE中切換到openSUSE的GNOME桌面环境
- APP开发两年的心得:App代码架构设计(1)
- 当一个头文件引用另一个头文件中的类~
- 233. Number of Digit One
- winpcap基本原理及常见应用_数字图像处理原理及应用教学大纲
- liferay 如何使用javascript
- 【数据库中间件】MyCat分表分库规则实现
- jpa 自定义sql if_跟飞哥学编程:SQL入门-:函数、存储过程和触发器
- 20189217 2018-2019-2 《移动平台开发实践》第6周学习总结
- android移动应用基础教程源代码,《Android移动应用基础教程》之Android购物商城
- C++ Primer Message和Folder类
- Python拉勾网爬虫实现
- Python献个礼 | 属于80、90后的 “儿童节” 礼物!
- SpringBoot使用拦截器实现Restful URL权限拦截
- robotiq自适应二指夹爪分析
- 用易我分区表医生恢复被破坏的分区表
- SqlServer数据库置疑的解决办法
- 手机网页设置摇一摇效果
- (资源免费)Sublime Text 3如何格式化json文本+格式化Sql语句
热门文章
- java await signal_【Java并发008】原理层面:ReentrantLock中 await()、signal()/signalAll()全解析...
- 【CodeForces - 675C】Money Transfers(思维,前缀和)
- 【CodeForces - 244A 】Dividing Orange (构造,水题)
- 【POJ - 1942 】Paths on a Grid (组合数学,求组合数的无数种方法)
- Apollo进阶课程㊳丨Apollo平台的快速入门
- 多用户操作git“远程仓库“(本地)
- CSS定位总结:position=static/relative/absolute/fixed时的区别、top/bottom/left/right与margin外边距的运用
- oracle数据库建表视频,Oracle数据库的创建表全
- java data jpa_Spring Data JPA(一)简介
- dmsetup remove_all 这命令干啥的_分一个小知识,服务器上的一个解压与压缩文件的命令....