Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 循环类型】

news/2025/2/4 19:37:00/

文章目录

  • 一、Shell 循环类型
  • 二、Shell while 循环
  • 三、Shell for 循环
  • 四、Shell until 循环
  • 五、Shell select 循环
  • 六、总结


在这里插入图片描述

Shell__6">一、Shell 循环类型

循环是一个强大的编程工具,使您能够重复执行一组命令。在本教程中,您将学习以下类型的循环 Shell 程序:

  • while 循环
  • for 循环
  • until 循环
  • select 循环

你会根据不同情况使用不同的循环。例如用 while 循环执行命令,直到给定的条件下是 ture ,循环直到执行到一个给定的条件为 false

有良好的编程习惯,将开始使用情况的基础上适当的循环。这里 whilefor 循环类似在大多数其他的编程语言,如C,C++ 和 Perl 等。

语法:

while command1 ; # this is loop1, the outer loop
doStatement(s) to be executed if command1 is truewhile command2 ; # this is loop2, the inner loopdoStatement(s) to be executed if command2 is truedoneStatement(s) to be executed if command1 is true
done

嵌套的 while 循环和类似的方式,可以嵌套其他循环的基础上的编程要求下面是一个例子:

例子: 这里是循环嵌套一个简单的例子,让我们添加另一个倒计时循环内的循环,数到九:

#!/bin/sha=0
while [ "$a" -lt 10 ]    # this is loop1
dob="$a"while [ "$b" -ge 0 ]  # this is loop2doecho -n "$b "b=`expr $b - 1`doneechoa=`expr $a + 1`
done

这将产生以下结果。

0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0

注意:重要的是要注意 echo -n 是如何工作。在这里,-n 选项 echo ,以避免打印一个新行字符。

Shell_while__71">二、Shell while 循环

while 循环,使您能够重复执行一组命令,直到某些条件发生。它通常用于当你需要反复操纵的变量值。

语法:

while command
doStatement(s) to be executed if command is true
done

这里 Shell 命令进行计算。如果结果值是 true,给定语句被执行。如果命令为 false,那么没有语句将不执行,程序将跳转到 done 语句后的下一行。

例子:
下面是一个简单的例子,使用 while 循环显示数字 0到9

#!/bin/sha=0while [ $a -lt 10 ]
doecho $aa=`expr $a + 1`
done

这将产生以下结果:

0
1
2
3
4
5
6
7
8
9

解析: 每一次执行这个循环,变量 a 进行检查,看该值是否小于10。如果 a 的值小于10,此测试条件的退出状态为0。在这种情况下,当前值的将显示,然后按1递增。

Shell_for__114">三、Shell for 循环

循环操作项目清单。重复一组命令列表中的每个项目。

语法:

for var in word1 word2 ... wordN
doStatement(s) to be executed for every word.
done

解析:
var 是一个变量,word1 到 wordN 是由空格分隔的字符(字)序列的名称。每次for 循环的执行,变量 var 的值被设置为下一个单词的列表中的字,word1 到 wordN 。

例子:
下面是一个简单的例子,它使用 for 循环跨越通过给定的数字列表:

#!/bin/shfor var in 0 1 2 3 4 5 6 7 8 9
doecho $var
done

这将产生以下结果:

0
1
2
3
4
5
6
7
8
9

下面的例子显示所有文件开始 .bashhome 目录。执行这个脚本:

#!/bin/shfor FILE in $HOME/.bash*
doecho $FILE
done

这将产生以下结果:

/root/.bash_history
/root/.bash_logout
/root/.bash_profile
/root/.bashrc

Shell_until__171">四、Shell until 循环

完美的情况下,你需要执行的一组命令某个条件为真时,while 循环执行。有时候,你需要执行一组命令,直到某个条件为真。

语法:

until command
doStatement(s) to be executed until command is true
done

解析: 这里 Shell 命令进行评估计算。如果结果值是 false ,给定语句(s)被执行。如果命令没有语句为 true ,那么将不执行,程序会跳转到下一行 done 语句后。

例子:
下面是一个简单的例子,它使用直到循环显示数字0到9:

#!/bin/sha=0until [ ! $a -lt 10 ]
doecho $aa=`expr $a + 1`
done

这将产生以下结果:

0
1
2
3
4
5
6
7
8
9

Shell_select__213">五、Shell select 循环

select 循环提供了一个简单的方法来创建一个编号的菜单,用户可从中选择。它是有用的,当你需要从列表中选择,要求用户选择一个或多个项目。
语法:

select var in word1 word2 ... wordN
doStatement(s) to be executed for every word.
done

解析:
var 是一个变量,word1 到 wordN是由空格分隔的字符(字)序列的名称。每次for循环的执行,变量 var 的值被设置为下一个单词的列表中的字,由 word1 到wordN。

对于每一个选择的一组命令将被执行,在循环中。这个循环在 ksh,并已被改编成的 bash 。这不是在 sh

例子:
下面是一个简单的例子,让用户选择的首选饮品:

#!/bin/kshselect DRINK in tea cofee water juice appe all none
docase $DRINK intea|cofee|water|all) echo "Go to canteen";;juice|appe)echo "Available at home";;none) break ;;*) echo "ERROR: Invalid selection" ;;esac
done

select 循环的菜单看起来像下面这样:

$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
#? juice
Available at home
#? none
$

您可以更改显示的提示选择循环通过改变变量 PS3 如下:

$PS3="Please make a selection => " ; export PS3
$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
Please make a selection => juice
Available at home
Please make a selection => none
$

六、总结

关于Shell 循环类型基本和其他语言大差不差,还差一个 循环控制 break/continue 放到下一篇单独介绍吧。


在这里插入图片描述


http://www.ppmy.cn/news/1569307.html

相关文章

UE学习日志#19 C++笔记#5 基础复习5 引用1

C中的引用(reference)是另一个变量的别名。对引用的所有修改都会更改其引用的变量的值。可以将引用视为隐式指针,它省去了获取变量地址和解引用指针的麻烦。另外,可以将引用视为原始变量的另一个名称。可以创建独立的引用变量&…

使用mybatisPlus插件生成代码步骤及注意事项

使用mybatisPlus插件可以很方便的生成与数据库对应的PO对象,以及对应的controller、service、ImplService、mapper代码,生成这种代码的方式有很多,包括mybatis-plus提供的代码生成器,以及idea提供的代码生成器,无论哪一…

实践网络安全:常见威胁与应对策略详解

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 在数字化转型的浪潮中,网络安全的重要性已达到前所未有的高度。无论是个人用户、企业,还是政府机构…

92,[8] 攻防世界 web Web_php_wrong_nginx_config

进入靶场 admin 123 还尝试了很多,都是建设中 进行目录扫描,扫描到了admin和robots.txt 这句话就应该想到BP 抓包 这样修改请求即可登录 BP加载不出来 F12修改 管理中心点击后会发生url的改变 变成这样 目录穿越,不断尝试 /admin/admi…

Git进阶之旅:分支管理策略

第一章: Git stash: 介绍: 当正在 dev 分支上开发某个项目,这时项目中出现一个 bug,需要修复,但是项目只完成一半,还不想提交,这时可以使用 git stash 命令将修改的内容保存至堆栈区…

汽车蓝牙钥匙定位仿真小程序

此需求来自于粉丝的真实需求,假期没事,牛刀小试。 一、项目背景 如今,智能车钥匙和移动端定位技术已经相当普及。为了探索蓝牙 Beacon 在短距离定位场景下的可行性,我们搭建了一个简易原型:利用 UniApp 在移动端采集蓝牙信标的 RSSI(信号强度),通过三边定位算法估算钥…

curope python安装

目录 curope安装 测试: 报错:libc10.so: cannot open shared object file: No such file or directory 解决方法: curope安装 git clone : GitHub - Junyi42/croco at bd6f4e07d5c4f13ae5388efc052dadf142aff754 cd models/curope/ python setup.py build_ext --inplac…

大厂面试题备份20250131

20250131 模型压缩怎么做?除了知识蒸馏 模型压缩是为了减少深度学习模型的计算和存储需求,提高推理效率。除了知识蒸馏,常见的模型压缩方法包括: 1. 剪枝(Pruning) 非结构化剪枝(Unstructur…