当前位置: 首页 > news >正文

【学习笔记】Shell编程---流程控制语句

最近学了好多个流程控制语句,都有点混乱了,赶紧先把各种用法记录下来!

if 语句

语法格式

if 条件测试命令串

then

        条件为真时执行的命令

else

        条件为假时执行的命令

fi

以关键字if开头,后跟条件测试表达式,条件表达式可以只包含单一的条件测试也可以是多个条件测试组成的复合表达式,关键字then可以和 if 处于同一行,也可以换行书写。处于同一行时,必须在条件表达式后添加分号“;” 当条件表达式成立时,可以执行一条或多条命令,以关键字 fi 结束。

例:当输入Y或者y时,输出“Very good!!!”;当输入N或n时,输出“Oh,I'm sorry to hear that!!!”

程序实现如下:

执行文件,结果是正确的

除了简单的if-else-fi结构,还有if-elif-else-fi结构

语法格式

if 条件表达式1 ; then

        条件表达式1成立时执行的命令

elif 条件表达式 2; then

        条件表达式2成立时执行的命令

else

        以上所有条件都不成立时执行的命令

fi

例:当输入Y或者y时,输出“Very good!!!”;当输入N或n时,输出“Oh,I'm sorry to hear that!!!”;当输入其他非Y/y/N/n的输入时,输出“Wrong answer!!!”

case条件语句

语法格式:

case 值 in

表达式1)命令1;;

表达式2)命令2;;

...

*)命令X

esac

case多选择语句,可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

例:输入一个num值,当输入的num是1时,输出A+B的值......

select循环

Shell中的select语句可以将选项列表做出类似目录的形式,以交互的形式选择列表中的数据,传入select语句中的主体部分加以执行,select语句实质上也是一个循环语句,若不添加break关键字,程序将无法跳出select结构。

语法格式:

select 变量 in 列表

do

        …

break

done

例:

如果不加【break】来跳出select循环的话将会出现以下情况

for循环

  • 主要用于执行次数确定的某种操作
  • 如果事先知道循环要执行多少次,使用for循环最合适
  • 把循环变量var设为value_list 中的一个值,然后代入循环体执行,直到value_list 中的每个值都使用一遍

通常有两种形式

第一种:

for var in var_list

do

        循环体

done

第二种:

for (( 初始化操作 ; 循环表达式 ; 赋值操作 ))

do

        循环体

done

这种形式循环变量的取值一般是一个整数 ,通过控制取值的上限或下限确定循环体的执行次数

例:

#!/bin/bash

还有一个非常典型的for循环的练习,题目,打印出99乘法表,打印的排版格式如下:

可以这样写:

#!/bin/bash
for i in {1..9}
dofor ((j=1;j<=i;j++))doprintf "%d*%d=%d" $j $i $((i*j))doneecho
done

打印结果如下

while循环

while循环主要用于执行次数不确定的某种操作

while循环的工作机制是:反复执行某种有规律的操作,直到条件不成立

语法格式:

while [ 循环表达式 ]

do

        循环体

done

例:编写一个名为putnum的程序,在屏幕上输出从10到1的数字。

使用while循环计算1-100的累加值

until循环

和while循环的含义正好相反

执行顺序:当循环表达式为真时结束循环,否则一直执行循环体

语法格式:

until [ 循环表达式 ]

do

        循环体

done

例:编写一个程序,依次输出10、9、8、7、6。

http://www.xdnf.cn/news/435475.html

相关文章:

  • PNG图片转icon图标Python脚本(简易版) - 随笔
  • 动态规划问题 -- 多状态模型(打家劫舍)
  • Java的进制转换
  • 大模型驱动的写实数字人实时对话:创新与实践
  • 谈谈各种IO模型
  • 算法·KMP
  • 1688 API 接口使用限制
  • 【C++】多线程和多进程
  • Java Spring 事件驱动机制
  • 中医诊所药房开处方调剂库存管理h5/pc开源版开发
  • 提供全球86国/地区进出口税费,46国/地区监管条件,53国/地区税费计算
  • 第二十三天打卡
  • 项目管理系统流程:高效运作的关键所在
  • 使用ADB命令操作Android的apk/aab包
  • [SAP] 通过程序名获取事务码TCode
  • Python实例题:Pvthon实现简单的Web服务器
  • AI 编程新时代!字节 Seed-Coder 重磅登场
  • 第六章QT基础: Lambda表达式补充
  • [250513] “End of 10” 活动:应对 Windows 10 支持终止,推广 Linux 转型
  • livenessProbe 和 readinessProbe 最佳实践
  • Pytorch学习笔记(二十二)Audio - Audio I/O
  • 论文《Collaboration-Aware Graph Convolutional Network for Recommender Systems》阅读
  • 打卡DAY24
  • 【调度算法】LaCAM快速多智能体路径搜索算法
  • LLM大模型transform架构的核心知识
  • 《从协议层面剖析 VoIP 通信:SIP 信令流中的 RPort、注册与呼叫建立机制》
  • 20250512期:基于arcpy数据驱动的大批量规范化出图
  • 油桃缺陷检测数据集VOC+YOLO格式559张2类别
  • AI助力:零基础开启编程之旅
  • 【JavaScript】原生 JavaScript 实现 localStorage 过期时间