广告
返回顶部
首页 > 资讯 > 操作系统 >shell 流程控制语句的具体使用
  • 876
分享到

shell 流程控制语句的具体使用

shell流程控制语句 2023-05-12 05:05:21 876人浏览 独家记忆
摘要

目录前言一、if - else 语句案例需求描述二、case语句三、while 语句四、until语句五、for语句for 语法写法一for 语法写法二for 语法写法三无限for循环六、select 语句八、

目录
  • 前言
  • 一、if - else 语句
  • 案例需求描述
  • 二、case语句
  • 三、while 语句
  • 四、until语句
  • 五、for语句
    • for 语法写法一
    • for 语法写法二
    • for 语法写法三
    • 无限for循环
  • 六、select 语句
    • 八、文件测试 test
      • 九、整数和字符串比较 test
        • 字符串比较测试

      前言

      可以说,在任何一门编程语言中都离不开流程控制语句,使用流程控制语句可以帮助程序处理各类复杂的操作,常用的流程控制语句,比如: if-else,while,for循环等,在linuxshell 编程语法中,也提供了丰富的流程控制语句,接下来将一一做详细的说明。

      一、if

      if 语法

      if  条件
      then
          命令
      fi

      if - else 语法

      if  条件
      then
         命令
      else
         命令
      fi

      if elif else 语法

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

      接下来用一个简单的案例完整演示下这几种if 语法的使用

      案例需求描述

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

      shell 脚本内容

      #!/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

      执行上面的shell ,观察输出效果

      shell 流程控制语句的具体使用

      补充说明

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

      二、case语句

      shell 中case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令,当分支较多,并且判断条件比较简单时,使用 case in 语句就比较方便了。

      case 语法结构

      case 值 in
      匹配模式1)
          命令1
          命令2
          ...
          ;;
      匹配模式2)
          命令1
          命令2
          ...
          ;;
      *)
          命令1
          命令2
          ...
          ;;
      esac

      关于case 语法的几点补充说明

      • 每一匹配模式必须以右括号结束;
      • 取值可以为变量或常数;
      • 匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;(类似break, 不可以替代否则语法报错);
      • 取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令;
      • case、in 和 esac 都是 Shell 关键字, esac就是case的反写在这里代表结束case;
      • 匹配模式: 可以是一个数字、一个字符串,甚至是一个简单正则表达式

      简单正则表达式支持如下通配符

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

      case 语句案例演示

      #!/bin/bash
      read -p "请输入一个0~7的数字:" number
      case $number in
      1)
          echo "星期一"
      	;;
      2)
          echo "星期二"
          ;;
      3)
          echo "星期三"
          ;;
      4)
          echo "星期四"
          ;;
      5)
          echo "星期五"
          ;;
      6)
          echo "星期六"
          ;;
      0|7)
          echo "星期日"
          ;;
      *)
          echo "您输入的数字无效"
          ;; 
      esac

      执行上面的shell脚本,观察输出效果

      shell 流程控制语句的具体使用

      三、while 语句

      while 语法

      while 条件
      do
      	命令1
      	命令2
      	...
      	continue; # 结束当前这一次循环, 进入下一次循环
      	break; # 结束当前循环
      done

      一个简单的案例

      #!/bin/bash
      read -p "请输入一个数字:" number
      i=0
      while [[ $i < $number ]]
      do
        echo "hello world :" $i
        ((i++))
      done

      执行上面的shell 脚本,观察输出效果

      shell 流程控制语句的具体使用

      使用while语句可以实现无限循环,写法如下

      while :
      do
          command
      done

      或者下面这样

      while true
      do
          command
      done

      四、until语句

      until 也属于循环结构语句, until 循环与 while 循环在处理方式上刚好相反, 循环条件为false会一致循环, 条件为true停止循环。

      until 语法

      条件如果返回值为1(代表false),则继续执行循环体内的语句,否则跳出循环。

      until 条件
      do
          命令
      done

      案例演示

      #!/bin/bash
      read -p "请输入一个数字:" number
      i=0
      until [[ ! $i < $number ]]
      do
        echo "hello world : " $i
        ((i++))
      done

      执行上面的shell脚本,观察输出效果

      shell 流程控制语句的具体使用

      五、for语句

      for 语法写法一

      for var in item1 item2 ... itemN
      do
          命令1
          命令2
          ...
      done

      1、var是循环变量

      2、item1 item2 ... itemN 是循环的范围

      演示案例

      #!/bin/bash
      for i in 1 2 3 4 5
      do
       echo "hello world :" $i
      done

      执行上面的脚本,观察输出效果

      shell 流程控制语句的具体使用

      for 语法写法二

      语法结构

      for var in {start..end}
      do
      	命令
      done

      start: 循环范围的起始值,必须为整数

      end: 循环范围的结束值, 必须为整数

      案例演示

      #! /bin/bash
      for i in {1..5}; do echo $i; done

      运行这段脚本,观察输出效果

      shell 流程控制语句的具体使用

      for 语法写法三

      语法结构

      这种写法相信做过应用端编程开发的同学更熟悉点吧

      for((i=start;i<=end;i++))
      do
      	命令
      done

      也可以简写成一行

      for((i=start;i<=end;i++)); do 命令; done

      案例演示

      #! /bin/bash
      for((i=0;i<=3;i++)); do echo "hello Word : " $i; done

      运行上面的sql,观察执行效果

      shell 流程控制语句的具体使用

      无限for循环

      在某些特殊的场景下,需要程序无限循环下去,可以参考下面的写法

      for((;;)); do 命令; done

      六、select 语句

      select in 循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功。select in 是 Shell 独有的一种循环,非常适合终端(Terminal)这样的交互场景, 其他语言没有。

      select 语法

      select var in menu1 menu2 ...
      do
          命令
      done

      注意:

      1、select 是无限循环(死循环),输入空值,或者输入的值无效,都不会结束循环,只有遇到 break 语句,或者按下 Ctrl+D 组合键才能结束循环;

      2、执行命令过程中: 终端会输出 #? 代表可以输入选择的菜单编号;

      案例演示1

      #!/bin/bash
      echo "你的爱好是什么?"
      select hobby in "编程" "游戏" "篮球" "游泳"
      do
      	echo $hobby
          break
      done
      echo "你的爱好是:${hobby}"

      运行上面的shell观察执行效果

      shell 流程控制语句的具体使用

      案例演示2

      #!/bin/bash
      echo "你的爱好是什么"
      select hobby in "编程" "游戏" "篮球" "游泳"
      do
          case $hobby in
              "编程")
                  echo "编程,多敲代码"
                  break
                  ;;
              "游戏")
                  echo "少玩游戏"
                  break
                  ;;
              "篮球"|"游泳")
                  echo "运动有利健康"
                  break
                  ;;
              *)
                  echo "输入错误,请重新输入"
          esac
      done

      运行上面的shell,观察执行效果

      shell 流程控制语句的具体使用

      接下来,补充几个比较重要的关于shell操作中的知识点

      八、文件测试 test

      在使用shell编程过程中,经常涉及到对各类文件,文件目录的操作,比如判断文件目录是否存在,文件里面的内容是否存在等,就需要用到文件测试相关的命令,下面总结的是和文件测试操作相关的语法。

      参数说明
      ==-e 文件名==exists, 如果文件存在则为真
      ==-r 文件名==read,如果文件存在且可读则为真
      ==-w 文件名==write,如果文件存在且可写则为真
      ==-x 文件名==execute,如果文件存在且可执行则为真
      ==-s 文件名==string,如果文件存在且至少有一个字符则为真
      ==-d 文件名==directory,如果文件存在且为目录则为真
      -f 文件名file,如果文件存在且为普通文件则为真
      -c 文件名character,如果文件存在且为字符型特殊文件则为真
      -b 文件名如果文件存在且为块特殊文件则为真

      案例演示

      #!/bin/bash
      if test -w ./if.sh
      then
          echo '文件已存在并且可写!'
      else
          echo '文件不存在或不可写!'
      fi
      if test -e ./if.sh -a -e ./control2.sh
      then
          echo '两个文件都存在!'
      else
          echo '可能有一个或两个文件不存在'
      fi

      运行上面的shell脚本,观察输出效果

      shell 流程控制语句的具体使用

      补充说明

      Shell提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低, 语法,如下:

      test 条件1 -o 条件2 -a 条件3 ...

      九、整数和字符串比较 test

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

      功能与[]一样。

      整数比较测试

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

      options具体如下

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

      整数比较具体案例

      #!/bin/bash
      num1=1 num2=1 num3=2
      echo "num1=${num1},num2=${num2},num3=${num3}"
      if test $num1 -eq $num2
      then
          echo 'num1和num2两个数相等!'
      else
          echo 'num1和num2两个数不相等!'
      fi
      if test $num2 -eq $num3
      then
          echo 'num2和num3两个数相等!'
      else
          echo 'num2和num3两个数不相等!'
      fi

      运行上面的shell,观察执行效果

      shell 流程控制语句的具体使用

      字符串比较测试

      语法结构

      参数说明
      = 或 ==等于, 等于返回0代表成功,否则返回1代表失败
      !=不等于
      \<小于
      \>大于
      -z 字符串字符串的长度为零则为真
      -n 字符串字符串的长度不为零则为真

      字符串比较具体案例

      #!/bin/bash
      str1="itheima" str2="itcast" str3=""
      echo "str1=${str1},str2=${str2},str3=${str3}"
      if test $str1 = $str2
      then
          echo 'str1和str2两个字符串相等'
      else
          echo 'str1和str2两个字符串不相等'
      fi
      if test $str1 \> $str2
      then
          echo 'str1大于str2'
      else
          echo 'str1小于str2'
      fi
      if test -z $str2
      then
      	echo "str2字符串长度为0"
      else
      	echo "str2字符串长度不为0"
      fi
      if test -z $str3
      then
      	echo "str3字符串长度为0"
      else
      	echo "str3字符串长度不为0"
      fi

      执行上面的shell,观察输出效果

      shell 流程控制语句的具体使用

      到此这篇关于shell 流程控制语句的具体使用的文章就介绍到这了,更多相关shell 流程控制语句内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

      --结束END--

      本文标题: shell 流程控制语句的具体使用

      本文链接: https://www.lsjlt.com/news/202043.html(转载时请注明来源链接)

      有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

      本篇文章演示代码以及资料文档资料下载

      下载Word文档到电脑,方便收藏和打印~

      下载Word文档
      猜你喜欢
      • shell流程控制语句的具体使用
        目录前言一、if - else 语句案例需求描述二、case语句三、while 语句四、until语句五、for语句for 语法写法一for 语法写法二for 语法写法三无...
        99+
        2023-05-19
        shell 流程控制语句
      • shell 流程控制语句的具体使用
        目录前言一、if - else 语句案例需求描述二、case语句三、while 语句四、until语句五、for语句for 语法写法一for 语法写法二for 语法写法三无限for循环六、select 语句八、...
        99+
        2023-05-12
        shell 流程控制语句
      • linux中如何使用shell的awk流程控制语句
        小编给大家分享一下linux中如何使用shell的awk流程控制语句,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.条件判断语句(if)代码如下:if(表达式)...
        99+
        2023-06-13
      • linux shell流程控制语句有哪些
        本篇内容主要讲解“linux shell流程控制语句有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux shell流程控制语句有哪些”吧!一、shell条件语句(if用法)if语句结...
        99+
        2023-06-09
      • shell脚本的流程控制语句的实现
        目录一、if 判断1)基本语法(2)多分支二、case 语句1)基本语法三、for 循环1)基本语法1 2)案例实操 3)基本语法 2(4)比较$*和$@区别四、while循环1)基本语法2)案例实操...
        99+
        2022-08-22
      • php流程控制语句的作用
        本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php流程控制语句的作用php流程控制语句的作用就是能基于不同条件执行不同的动作。PHP三大流程控制语句有三种,分别是顺序语句,选择语句,循环语句。在编程中起到了很大的作...
        99+
        2019-09-21
        php
      • golang流程控制语句怎么使用
        本文小编为大家详细介绍“golang流程控制语句怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang流程控制语句怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。流程控制语句:1、if语句,由...
        99+
        2023-07-04
      • PHP流程控制语句怎么使用
        在PHP中,流程控制语句用于根据不同的条件来执行不同的代码块。下面是一些常用的流程控制语句的使用方法:1. if语句:用于判断一个条...
        99+
        2023-09-05
        PHP
      • SQLSERVER中的流程控制语句
        目录批处理1、BEGIN...AND语句2、IF...ELSE语句3、 CASE语句4、 WHILE语句5、无条件退出语句RETURN6、无条件跳转语句GOTO7、WAITFOR语句...
        99+
        2022-11-13
      • Mysql流程控制语句的介绍和使用
        平时绝大部分时间可能都用不到Mysql的流程控制语句,但如果我们需要写存储过程的话,就会用到了。有了流程控制语句,mysql就能想其他编程语言一样写程序了。下面分别来介绍条件分支与循环体。条件分支mysql...
        99+
        2022-10-18
      • JavaScript流程控制语句怎么用
        这篇文章主要介绍“JavaScript流程控制语句怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript流程控制语句怎么用”文章能帮助大家解决问题...
        99+
        2022-10-19
      • Python流程控制语句怎么用
        这篇文章主要介绍了Python流程控制语句怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python流程控制语句怎么用文章都会有所收获,下面我们一起来看看吧。Python 中有 while&nb...
        99+
        2023-06-30
      • linux shell流程控制语句实例讲解(if、for、while、case语句实例)
        一、shell条件语句(if用法) if语句结构[if/then/elif/else/fi] if 条件测试语句 then action [elif 条件 action else action ] fi...
        99+
        2022-06-04
        语句 实例 流程
      • Python中的程序流程控制语句
        目录一、分支语句二、循环语句1.可迭代对象2.while循环3.for循环4.九九乘法表三.循环控制语句1.break2.continue3.goto4.else四、循环相关的内置函...
        99+
        2022-11-13
      • 详解Shell if else语句的具体使用方法
        和其它编程语言类似,Shell 也支持选择结构,并且有两种形式,分别是 if else 语句和 case in 语句。本节我们先介绍 if else 语句,case in 语句将会在《Shell case in》中介绍。...
        99+
        2022-06-04
        Shell if else语句
      • javascript流程控制语句有什么用
        这篇文章主要讲解了“javascript流程控制语句有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript流程控制语句有什么用”吧! ...
        99+
        2022-10-19
      • python的流程控制语句有哪些
        python的流程控制语句有:1、if语句,根据条件执行不同的代码块;2、for循环,用于遍历一个序列或其他可迭代对象;3、while循环,当给定条件为真时,重复执行一段代码;4、break语句,用于终止当前循环,跳出整个循环;5、cont...
        99+
        2023-12-11
        python
      • Java的流程控制语句有哪些
        本篇内容介绍了“Java的流程控制语句有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!01、if-else 相关1)if 语句if 语句...
        99+
        2023-06-16
      • MySQLDQL语句的具体使用
        目录DQL基本语法基础查询条件查询语法条件案例聚合函数DQL DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。 基本语...
        99+
        2023-03-21
        MySQL DQL语句 MySQL DQL
      • Pythonmatch语句的具体使用
        python 3.10支持match语句,3,10以下不支持。 match语句接受一个表达式,并将其值与作为一个或多个case块给出的连续模式进行比较。这表面上类似于C、Java或J...
        99+
        2023-05-17
        Python match
      软考高级职称资格查询
      编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
      • 官方手机版

      • 微信公众号

      • 商务合作