1. if-else语句

能够使用if条件语句进行条件判断

1.1 if 语法

if  条件
then
命令
fi
if 条件; then 命令; fi

1.2 if-else 语法

if  条件
then
命令
else
命令
fi

1.3 if elif else 语法

if  条件1
then
命令1
elif 条件2
then
命令2
elif 条件3
then
命令3
……
else
命令N
fi

1.4 演示

需求

提示"请输入你的考试成绩:" 接收用户输入一个成绩, 之后使用if else条件句判断
要求1: 小于 60 输出"不及格"
要求2: 大于等于70 并且 小于80 输出"中等"
要求3: 大于等于80 并且 小于90 输出"良好"
要求4: 大于等于90 并且 小于等于100 输出"优秀"
要求5: 以上不符合输出"成绩不合法"

control1.sh脚本代码

#!/bin/bash
read -p "请输入你的考试成绩:" score
if (( $score < 60 )); then
echo "不及格"
elif (( $score >= 60 && $score < 70 )); then
echo "及格"
elif (( $score >= 70 && $score < 80 )); then
echo "中等"
elif (( $score >= 80 && $score < 90 )); then
echo "良好"
elif (( $score >= 90 && $score <= 100 )); then
echo "优秀"
else
echo "成绩不合法"
fi

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

2. if条件判断语句的退出状态

linux任何命令的的执行都会有一个退出状态, 无论是内置命令还是外部文件命令. 还是自定义的 Shell 函数,当它退出(运行结束)时,都会返回一个比较小的整数值给调用(使用)它的程序,这就是命令的退出状态

大多数命令状态0代表成功, 非0代表失败. 也有特殊的命令,比如 diff 命令用来比较两个文件的不同,对于“没有差别”的文件返回 0,对于“找到差别”的文件返回 1,对无效文件名返回 2

Shell 中,有多种方式取得命令的退出状态,其中 $? 是最常见的一种.

((1==2))

echo $? 

# 结果为1,1==2不成立,退出状态为1

2.2 退出状态和逻辑运算符的组合

Shell if 语句使用逻辑运算符将多个退出状态组合起来,这样就可以一次判断多个条件了。

运算符 使用格式 说明
&& 或 -a 条件1 && 条件2 逻辑与运算符,当 条件1 和 条件2 同时成立时,
整个表达式才成立。 如果检测到 条件1 的退出状态为 0,
就不会再检测 条件2 了,因为不管 条件2 的退出状态是什么,
整个表达式必然都是不成立的,检测了也是多此一举。
|| 或 -o 条件1 || 条件2 逻辑或运算符,条件1 和 条件2 两个表
达式中只要有一个成立,整个表达式就成立。 如果检
测到 条件1 的退出状态为 1,就不会再检测 条件2 了,因为
不管 条件2 的退出状态是什么,整个表达式必然都是成立的,
检测了也是多此一举。
! !条件 逻辑非运算符,相当于“取反”的效果。如果 条件 成立,那么整
个表达式就不成立;如果 条件 不成立,那么整个表达式就成立。

2.3 示例

提示输入"请输入文件全名: "和"请输入数据:" 并接收文件名与数据

使用逻辑运算符判断满足2 条件 : 文件需要具有可写权限 和 输入的数据长度不为0

满足以上2个条件 将用户输入的 数据 写入到指定的文件中去

#!/bin/bash

read -p "请输入文件全名:" filename
read -p "请输入数据:" data if [-w $filename -a -n $data]
then
echo $data
echo $data > $filename
echo "成功"
else
echo "失败"
fi

test命令用于对文件或字符串进行检测, -w 判断文件是否存在并且可写, -n 用于检测字符串是否非空, 后续讲解.

$data > $filename 其中 > 用于将内容输出到指定文件中去

2.test语句

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

功能与[]一样

2.1 整数比较

if test 数字1 options 数字2
then
...
fi

options具体如下

参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

2.2 字符串比较

09 - Shell流程控制语句的更多相关文章

  1. 5.Shell 流程控制语句

    1.流程控制语句 通过if.for.while.case这4种流程控制语句来学习编写难度更大.功能更强的Shell脚本 4.3.1 if条件测试语句: if条件测试语句可以让脚本根据实际情况自动执行相 ...

  2. Linux | Shell流程控制语句

    流程控制语句 简单的Shell 脚本还不能满足我们日常工作的需要要,因为他不能批量的帮我们完成工作,所以Shell引入了 if.for.while.case 4种流程控制语句来帮助我们完成工作. if ...

  3. Linux Shell 流程控制语句

    * 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...

  4. shell流程控制语句

    linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while,until),选择语句(case/select).下面我将通过例子介绍下,各个语句使用方法. 1 ...

  5. shell 流程控制语句

    case语句 case $变量名 in "值1")   如果变量的值等于值1,则执行程序1 ;;  "值2")   如果变量的值等于值2,则执行程序2 ;;   ...

  6. Shell流程控制语句for

    for语法格式: for 变量 in 参数列表 do 命令 done 或者 for 变量 in 参数列表 ; do 命令 done for语句流程控制图: 实例: [root@youxi1 ~]# v ...

  7. Shell流程控制语句while

    while语法格式: while 判断条件 do 命令 done while语句流程控制图: 实例: [root@youxi1 ~]# vim a.sh #!/bin/bash i=0 while [ ...

  8. Shell流程控制语句case

    case语法格式: case 变量或表达式 in 变量或表达式1) 命令1 ;; 变量或表达式2) 命令2 ;; ...... *) 默认命令 esac case语句流程控制图:  实例: [root ...

  9. Shell流程控制语句if

    (1).if语句 语法格式: if 判断条件 ; then 命令 fi 或 if 判断条件 then 命令 fi if语句流程图: 实例:判断命令是否执行成功,成功则输出语句This is ok. [ ...

  10. shell编程3 ---流程控制语句

    shell编程流程控制语句 一.if流程控制语句 1.单分支if条件判断语句 if [  条件判断式 ]:then     或者   if[ 条件判断式 ] 程序                   ...

随机推荐

  1. 弹性数据库连接池探活策略调研(三)——DBCP

    前言 在之前的文章中,我们介绍了弹性数据库连接失效的背景,并探讨了HikariCP.Druid连接池探活策略的相关内容.在本文中,我们将会继续探讨另一个线上常用的连接池--DBCP,并为您介绍如何在使 ...

  2. kmp的简单应用

    Smiling & Weeping ---- 我只为你一个人写过月亮 题目链接:P4824 [USACO15FEB] Censoring S - 洛谷 | 计算机科学教育新生态 (luogu. ...

  3. HTML网页/KRPano项目一键打包EXE工具(HTML网页打包成单个windows可执行文件exe)

    HTML一键打包EXE工具使用说明 工具简介 HTML一键打包EXE工具(HTML封装EXE,桌件)能把任意HTML项目(网址)一键打包为单个EXE文件,可以脱离浏览器和服务器,直接双击即可运行.支持 ...

  4. KRPano最新官方文档中文版

    KRPano最新官方文档中文版: KRPano作为VR全景开发中常用的工具软件,深受广大开发者喜爱,但由于软件本身是国外软件,因此官方的文档都是以英文为主,对于一些国内不太熟悉英文的开发者来说比较不友 ...

  5. WPF开发必备

    类库 1.XamlFlair The goal of the XamlFlair library is to ease the implementation of common animations ...

  6. 关于关闭Sublime Text自动更新提示

    Sublime Text默认提示自动更新,实在让人烦不胜烦,那么有没有办法解决嘞,那当然是有的,下面就教你如何关闭Sublime Text自动更新提示 首先注册,不注册的话,一切操作都没有用:(注册码 ...

  7. 【目标检测】Fast R-CNN算法实现

    一.前言 2014年,Ross Girshick提出RCNN,成为目标检测领域的开山之作.一年后,借鉴空间金字塔池化思想,Ross Girshick推出设计更为巧妙的Fast RCNN(https:/ ...

  8. win如何根据端口号查找并杀死一个线程

    查看端口占用 netstat -ano | findstr "端口号" 杀死一个进程 taskkill /pid 进程号 -f

  9. 若依框架的startPage( )函数怎么自动关联查询SQL语句?

    Question Description 使用JAVA语言的若依框架的时候,发现只要使用了startPage()函数, 并不需要前端传递分页的数据,也不需要注解,就能完成分页功能.预判他应该是使用类似 ...

  10. linux日常运维(三) GRUB 2的维护

    GRUB 2简介 GRUB GRUB是linux系统默认的引导加载程序.linux加载一个系统前,它必须有一个引导加载程序中特定指令(比如MBR记录)去引导系统.这个程序一般是位于系统的主硬盘驱动器或 ...