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

shell编程系列(4)-循环结构

文章目录

  • 前言
  • for循环结构
  • until循环结构
  • while 循环结构
  • 循环控制
    • break 和 exit 退出循环
    • continue 跳过本轮循环

前言

循环结构也是编程语言中必不可少的一部分,各类脚本语言、面向对象语言都有循环结构,并且循环结构的类别和使用都大差不差,所以我们掌握了一种之后,对于其他编程语言的循环结构也能很快熟悉。
shell语言中提供了三类循环结构,接下来我们逐个学习一下。

for循环结构

for循环结构是比较常见的,具体语法如下:

#!/bin/bash

# {1..5}代表生成1-5的数字序列,这里也可以是数组,或者某个命令的返回结果
for num in {1..5}
do
	echo " the number is  $num"
done

还有一种类似于C和Java的语法,如下:

#! /bin/bash

for (( i=1;i<5;i++))
do	
	echo " the number is  $i"
done

看起来是不是和C语言里的for循环很相似呢

注意事项:

  1. for循环可以循环数组,数字序列,也可以是某个命令的返回结果(如果该命令返回的是一个数组,例如 ls命令)
  2. 类C的for循环中要注意是两个左右括号

until循环结构

until的循环语法如下:

#!/bin/bash

i=1
until [[ $i -gt 5 ]]
do
	echo "the num is $i"
	let i+=1
done

注意事项:

  1. 未指明类型的变量默认都是字符串类型,如果做数学运算需要加上let关键字

while 循环结构

while循环的语法如下:

#!/bin/bash

while  [[ $i -lt 5 ]]
do
	echo "the num is $i"
	let i+=1
done

whileuntil 的区别:
while 是符合条件才进行循环,不符合条件时候就停止循环,而util循环正好相反

循环控制

break 和 exit 退出循环

breakexit 都可以退出当前的循环,不同的是 exit 除了退出循环外还可以指定一个返回值,例如:

#!/bin/bash
i=1
until [ $i -gt 5  ]
do
	echo "the num is $i"
	let i+=1
	if [ $i -eq 3  ] 
	then	
		# 这里也可以使用break 或者直接exit不带返回码
		exit 0
	fi
done

continue 跳过本轮循环

continue 是跳过一次循环,直接开始下一次循环

#!/bin/bash
i=1
until [ $i -gt 5  ]
do
	echo "the num is $i"
	let i+=1
	if [ $i -eq 3  ] 
	then	
		# 跳过当前i=3的循环
		continue
	fi
done

http://www.kler.cn/news/149111.html

相关文章:

  • Java第十二篇:连接安全版kafka(Kerberos认证)出现的问题解答
  • C++学习之路(十)C++ 用Qt5实现一个工具箱(增加一个时间戳转换功能)- 示例代码拆分讲解
  • Matlab 点云曲率计算(之二)
  • 浅谈现代化城市建设中智慧消防的研究与应用
  • Python与微信交互(互动)神器yyds
  • 数字乡村:科技赋能农村产业升级
  • 计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(用户上传头像+用户收货管理)
  • 鸿运主动安全监控云平台存在任意文件读取漏洞 附POC
  • oracle免费资源 终止实例 以及新建一台实例的折腾记录
  • 【Linux进阶之路】进程间通信
  • ubuntu vmware开启3d加速画面异常
  • Unity 接入TapADN播放广告时闪退 LZ4JavaSafeCompressor
  • map出现遍历新数组undefined解决
  • C#鼠标穿透功能(WinForm)
  • 命令模式 (Command Pattern)
  • OPENWRT路由配置IPV6公网访问
  • PTA:用函数实现从数列中删除一个数
  • Redis深入理解-主从架构下内核数据结构、主从同步以及主节点选举
  • 微信小程序获取手机号流程以及用到的API
  • 零信任安全:远程浏览器隔离(RBI)的重要性
  • 283. 移动零(双指针)
  • webform使用ajax访问后端接口的两种方法
  • 这个蓄电池监控神技,谁用谁知道!
  • C++数据结构:图
  • react项目自行配置热更新
  • 2023金盾杯线上赛-AGRT战队-WP
  • MySQL -DDL 及表类型
  • Django RestFramework
  • 【Rust】结构体与枚举
  • AIGC: 关于ChatGPT中Prompt模板的优化