和其它编程语言类似,Shell 也支持选择结构,并且有两种形式,分别是 if else 语句和 case in 语句。本节我们先介绍 if else 语句,case in 语句将会在《Shell case in》中介绍。

如果你已经熟悉了C语言、Java、JavaScript 等其它编程语言,那么你可能会觉得 Shell 中的 if else 语句有点奇怪。

if 语句

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

if  condition

then

statement(s)

fi

condition是判断条件,如果 condition 成立(返回“真”),那么 then 后边的语句将会被执行;如果 condition 不成立(返回“假”),那么不会执行任何语句。

从本质上讲,if 检测的是命令的退出状态,我们将在下节《Shell退出状态》中深入讲解。

注意,最后必须以fi来闭合,fi 就是 if 倒过来拼写。也正是有了 fi 来结尾,所以即使有多条语句也不需要用{ }包围起来。

如果你喜欢,也可以将 then 和 if 写在一行:

if  condition;  then

statement(s)

fi

请注意 condition 后边的分号;,当 if 和 then 位于同一行的时候,这个分号是必须的,否则会有语法错误。

实例1

下面的例子使用 if 语句来比较两个数字的大小:

#!/bin/bash

read a

read b

if (( $a == $b ))

then

echo "a和b相等"

fi

运行结果:

84↙

84↙

a和b相等

在《Shell (())》一节中我们讲到,(())是一种数学计算命令,它除了可以进行最基本的加减乘除运算,还可以进行大于、小于、等于等关系运算,以及与、或、非逻辑运算。当 a 和 b 相等时,(( $a == $b ))判断条件成立,进入 if,执行 then 后边的 echo 语句。

实例2

在判断条件中也可以使用逻辑运算符,例如:

#!/bin/bash

read age

read iq

if (( $age > 18 && $iq < 60 ))

then

echo "你都成年了,智商怎么还不及格!"

echo "来C语言中文网(http://c.biancheng.net/)学习编程吧,能迅速提高你的智商。"

fi

运行结果:

20↙

56↙

你都成年了,智商怎么还不及格!

来C语言中文网(http://c.biancheng.net/)学习编程吧,能迅速提高你的智商。

&&就是逻辑“与”运算符,只有当&&两侧的判断条件都为“真”时,整个判断条件才为“真”。

熟悉其他编程语言的读者请注意,即使 then 后边有多条语句,也不需要用{ }包围起来,因为有 fi 收尾呢。

if else 语句

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

if  condition

then

statement1

else

statement2

fi

如果 condition 成立,那么 then 后边的 statement1 语句将会被执行;否则,执行 else 后边的 statement2 语句。

举个例子:

#!/bin/bash

read a

read b

if (( $a == $b ))

then

echo "a和b相等"

else

echo "a和b不相等,输入错误"

fi

运行结果:

10↙

20↙

a 和 b 不相等,输入错误

从运行结果可以看出,a 和 b 不相等,判断条件不成立,所以执行了 else 后边的语句。

if elif else 语句

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

if  condition1

then

statement1

elif condition2

then

statement2

elif condition3

then

statement3

……

else

statementn

fi

注意,if 和 elif 后边都得跟着 then。

整条语句的执行逻辑为:

如果 condition1 成立,那么就执行 if 后边的 statement1;如果 condition1 不成立,那么继续执行 elif,判断 condition2。

如果 condition2 成立,那么就执行 statement2;如果 condition2 不成立,那么继续执行后边的 elif,判断 condition3。

如果 condition3 成立,那么就执行 statement3;如果 condition3 不成立,那么继续执行后边的 elif。

如果所有的 if 和 elif 判断都不成立,就进入最后的 else,执行 statementn。

举个例子,输入年龄,输出对应的人生阶段:

#!/bin/bash

read age

if (( $age <= 2 )); then

echo "婴儿"

elif (( $age >= 3 && $age <= 8 )); then

echo "幼儿"

elif (( $age >= 9 && $age <= 17 )); then

echo "少年"

elif (( $age >= 18 && $age <=25 )); then

echo "成年"

elif (( $age >= 26 && $age <= 40 )); then

echo "青年"

elif (( $age >= 41 && $age <= 60 )); then

echo "中年"

else

echo "老年"

fi

运行结果1:

19

成年

运行结果2:

100

老年

再举一个例子,输入一个整数,输出该整数对应的星期几的英文表示:

#!/bin/bash

printf "Input integer number: "

read num

if ((num==1)); then

echo "Monday"

elif ((num==2)); then

echo "Tuesday"

elif ((num==3)); then

echo "Wednesday"

elif ((num==4)); then

echo "Thursday"

elif ((num==5)); then

echo "Friday"

elif ((num==6)); then

echo "Saturday"

elif ((num==7)); then

echo "Sunday"

else

echo "error"

fi

运行结果1:

Input integer number: 4

Thursday

运行结果2:

Input integer number: 9

error

Shell else if mysql_Shell if else语句(详解版)相关推荐

  1. 【Linux】shell脚本实战-if多分支条件语句详解

    文章目录 前言 多分支语句的语法 多分支语句举例: 1. 出嫁的条件 2. 管理http服务实战脚本 3. 猜数字游戏v1版本-if版本 总结 前言 前面我们已经学习过单分支语句和双分支语句的使用. ...

  2. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

  3. mysql explain语句_Mysql explain 语句详解

    explain 语句详解 explain 写在 select 前,如下 mysql> explain select * from user_info where id = 2\G ******* ...

  4. mysql切换用户sql语句,MySQL用户管理及SQL语句详解

    [(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...

  5. Java教程:Java continue语句详解

    Java教程有时强迫一个循环提早反复是有用的,也就是,你可能想要继续运行循环,但是要忽略这次重复剩余的循环体的语句,所以 Java 提供了 continue 语句.continue 语句是 break ...

  6. smarty手册-smarty中foreach循环语句详解

    原文地址:smarty手册-smarty中foreach循环语句详解作者:谭博 {foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其 ...

  7. 教妹学Java(十四):switch 语句详解

    大家好,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员.本篇文章通过我和三妹对话的形式来谈一谈"switch 语句". 教妹学 Java,没见过这么有趣的标题吧?&q ...

  8. MySQL数据库增删改查常用语句详解

    MySQL数据库增删改查常用语句详解 一 MySQL数据库表结构 1.1 常见数据类型 1.2 常用约束类型 1.3 MySQL存储引擎 二 DDL语句:数据定义语句 2.1 修改数据库密码 2.1. ...

  9. MyBatis SQL语句详解

    MyBatis SQL语句详解 1 CRUD标签 1.1 select 1.2 insert 1.3 update 1.4 delete 1.5 #{ }和${ }的区别 2 动态SQL 2.1 if ...

  10. mysql的load data_【MySQL】load data语句详解(一)

    作者  罗小波 沃趣科技高级MySQL数据库工程师 load data语句详解 背景 数据库版本:MySQL 5.7.18 服务器信息:本地到处导入在10.10.30.241上演示,local远程导入 ...

最新文章

  1. iOS 百度地图使用详解
  2. python 均方误差_一个很随意的Python智能优化库,一个文件就是一个库-- PySwarm
  3. 剔除异常值栅格计算器_R语言系列 数据清洗3 异常值处理
  4. VS Code设置代码片段(C++)
  5. 逐渐增高_健身能不能增高?真相原来是这样
  6. 计算机中国象棋书籍,[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件...
  7. Java Servlet 使用slf4j配置log4j
  8. SnapKit 源码解读(一):Extensions
  9. WCF简单教程(4) 数据契约
  10. 很全的C51库函数(IIC类)(IIC、EEPROM、ADXL、PCF、HMC、L3G、BMP)
  11. HDU4282 A very hard mathematic problem 快速幂
  12. matlab初学者_脚本文件调用函数文件
  13. MATLAB如何调用百度云文字识别API
  14. 习题 9.9 商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。
  15. Linux内核写ddr物理地址,DM6437-读写DDR测试过程
  16. 【小技巧】STA静态时序分析概述
  17. 进程和守护进程的区别
  18. Altium Designer18中DDR3的数据和地址线如何分别布等长线,走蛇形线
  19. 祝愿大家在新的一年里,万事大吉,送上我设计的可爱暴富小老虎微信红包封面,祝愿大家新的一年财运旺,事业旺,健康旺。
  20. 交易就是练就这五种能力(干货分享)

热门文章

  1. 【渝粤教育】国家开放大学2018年秋季 2247T社会工作政策法规 参考试题
  2. 【渝粤教育】国家开放大学2019年春季 1362应用语言学 参考试题
  3. 【渝粤教育】电大中专消费者心理学答案作业 题库
  4. SI4463模块配合WDS的快速上手指南
  5. NB-IoTDTU对比于3G/4G DTU的区别和优势
  6. 抖音计算机音乐你要我,抖音你要我怎么做是什么歌 抖音你要我怎么做怎么说才能爱我歌曲介绍...
  7. java 代码造假_老板居然让我在Java项目中“造假”
  8. java list 遍历 remove_JAVA中LISt遍历时如何remove元素?
  9. java中 private final_Java笔记:final与private关键字
  10. BCH码和m序列参数估计(梅西迭代算法求多项式的MATLAB实现)