news 2026/5/13 10:18:37

while和for循环应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
while和for循环应用

while和for循环应用

while循环和until循环的应用实践

当型和直到型循环语法

while循环语句
while<条件表达式>do指令...done

当型和直到型循环的基本范例

竖向打印54321

while格式:

#!/bin/bashi=5while((i>0))doecho$i((i--))done

计算1+2+3+…+99+100的和

#!/bin/bashi=1sum=0while((i<=100))do((sum+=i))((i++))# let i++doneecho"1+2+3+...+99+100=$sum"

forselect循环语句的应用实践

for循环语法结构

变量取值型

第一种for循环语句语法结构如下:

for变量名in变量取值列表do指令...done
C语言型
for((expl;exp2;exp3))do指令...done

这种for循环语句说明如下:

  1. for关键字后的双括号内是三个表达式:

    • 第一个是变量初始化(例如:i=0)

    • 第二个为变量的范围(例如:i<100)

    • 第三个为变量自增或自减(例如:i++)。

for循环语句的基础实践

竖向升序打印

# 列表型[han@han-shell ~]$vimfor1.sh#!/bin/bashforiin{1..5}doecho$idone[han@han-shell ~]$bashfor1.sh1234# c语言型[han@han-shell ~]$vimfor3.sh#!/bin/bashfor((i=1;i<=5;i++))doecho$idone# while型[han@han-shell ~]$vimwhile1.sh#!/bin/bashi=1while((i<=5))doecho$i((i++))done

竖向降序打印

[han@han-shell ~]$vimfor4.sh#!/bin/bashforiin{5..1}doecho$idone[han@han-shell ~]$bashfor4.sh54321[han@han-shell ~]$vimfor5.sh#!/bin/bashforiin$(seq5-11)doecho$idone

求和、求乘积

#!/bin/bashsum=0foriin{1..10}dosum=$[sum+ i]doneecho$(seq-s'+'10)=$sum
#!/bin/bashsum=1foriin{1..10}do((sum*=i))doneecho$(seq-s'*'10)=$sum

九九乘法表

#!/bin/bash for num1 in {1..9} do for ((num2=1;num2<=num1;num2++)) do echo -en "$num2*$num1=$[ num2 * num1 ]\t" done echo done

百钱买百鸡

鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?

#!/bin/bash# 鸡翁数量 cock_num# 鸡母数量 hen_num# 鸡雏数量 chick_num# 鸡总数量 sumsum=100# 钱总数 moneymoney=100for((cock_num=1;cock_num<=sum/5;cock_num++))dofor((hen_num=1;hen_num<=sum/3;hen_num++))doforchick_numin{3..100..3}doif[$[cock_num+hen_num+chick_num]-eq100-a$[cock_num*5+hen_num*3+chick_num/3]-eq100];thenecho"鸡翁:$cock_num鸡母:$hen_num鸡雏:$chick_num"echo"$cock_num*5+$hen_num*3+$chick_num/3=100"echofidonedonedone

三对情侣参加婚礼

3个新郎为A、B、C,3个新娘为X、Y、Z。有人想知道究竟谁与谁结婚,于是就问新人中的三位,得到如下结果:

  • A说他将和X结婚;
  • X说她的未婚夫是C;
  • C说他将和Z结婚。

这人事后知道他们说的全是假话。那么,究竟谁与谁结婚呢?

解题思路

  • 根据之前的假话得出反向判定条件

  • 多个人不能同时和一个人结婚

#!/bin/bashforAinX Y ZdoforBinX Y ZdoforCinX Y Zdoif["$A"!="$B"-a"$A"!="$C"-a"$B"!="$C"-a"$A"!="X"-a"$C"!="X"-a"$C"!="Z"];thenechoA 与$A结婚echoB 与$B结婚echoC 与$C结婚fidonedonedone

执行结果

A 与 Z 结婚 B 与 X 结婚 C 与 Y 结婚

实验

要求在模版虚拟机中开发一个脚本sethost:
1. 执行sethost 11,则设置改主机的主机名为ha1.han.cloud,IP地址为10.1.8.11,网关为10.1.8.21 DNS为10.1.8.21 2. 执行sethost 12,则设置改主机的主机名为ha2.han.cloud,IP地址为10.1.8.12,网关为10.1.8.21 DNS为10.1.8.21 以此类推 3. 执行sethost 21,则设置改主机的主机名为network1.han.cloud,IP地址为10.1.8.21,网关为10.1.8.2 DNS为10.1.8.223.5.5.5 3. 执行sethost 22,则设置改主机的主机名为network2.han.cloud,IP地址为10.1.8.22,网关为10.1.8.2 DNS为10.1.8.223.5.5.5 以下六台服务器全部克隆与模版虚拟机 10.1.8.11 ha1.han.cloud ha1 10.1.8.12 ha2.han.cloud ha2 10.1.8.13 proxy1.han.cloud proxy1 10.1.8.14 proxy2.han.cloud proxy2 10.1.8.21 network1.han.cloud network1 10.1.8.22 network2.han.cloud network2 对于网络节点网关为10.1.8.2 DNS为223.5.5.5 对于其他节点网关为10.1.8.21 DNS为10.1.8.21
# 准备虚拟机和克隆虚拟机过程: 登录模版虚拟机,创建脚本文件 [root@centos7 ~ 16:19:05]# mkdir bin [root@centos7 ~ 16:19:11]# cd bin # 务必要微调sethost脚本中两个参数:DOMAIN、CON_NAME
[root@centos7 bin 16:19:12]# vim sethost #!/bin/bash DOMAIN=han.cloud CON_NAME=ens32 ADDRESS=10.1.8.$1 GATEWAY=10.1.8.21 DNS=10.1.8.21 num=$1 if ((num>=11 && num<=14 || num==21 || num==22));then # 获取网络信息 case $1 in 1[12]) HOSTNAME=ha$[$1-10].$DOMAIN ;; 1[34]) HOSTNAME=proxy$[$1-12].$DOMAIN ;; 2[12]) HOSTNAME=network$[$1-20].$DOMAIN GATEWAY=10.1.8.2 DNS=223.5.5.5 ;; esac # 设置网络信息 hostnamectl set-hostname $HOSTNAME nmcli connection modify ${CON_NAME} ipv4.addresses $ADDRESS/24 ipv4.gateway $GATEWAY ipv4.dns $DNS nmcli connection up ${CON_NAME} &>/dev/null # 查看网络信息 echo "Hostname: $(hostname)" echo "IP4:" nmcli device show ens32|grep ^IP4 else echo "Usage: $0 11-14 | 21-22" fi [root@centos7 bin 16:19:32]# chmod +x sethost
# 在模板虚拟机本地console中执行sethost命令测试,例如: sethost 11 sethost 21 测试没有问题的情况下,在执行init 0关机。 # 打快照,快照名称为sethostname。 # 选中该快照,点击克隆,节省磁盘空间,选择链接克隆。 # 克隆完成后,启动这些虚拟机。 # 在克隆出来的虚拟机中执行脚本,设置主机名和网络信息。 以network2 为例 sethost 21
维护脚本在ha1节点开发
1. 配置/etc/hosts [root@ha1 ~ 16:37:35]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.1.8.11 ha1.han.cloud ha1 10.1.8.12 ha2.han.cloud ha2 10.1.8.13 proxy1.han.cloud proxy1 10.1.8.14 proxy2.han.cloud proxy2 10.1.8.21 network1.han.cloud network1 10.1.8.22 network2.han.cloud network2
2. 配免密登录[root@ha1 ~16:38:12]# [ -d ~/.ssh ] || mkdir 700 ~/.ssh[root@ha1 ~16:38:38]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ''[root@ha1 ~16:39:21]# echo 'StrictHostKeyChecking no' >> /etc/ssh/ssh_config[root@ha1 ~16:39:32]# for host in ha{1,2} proxy{1,2} network{1,2}dosshpass-p123ssh-copy-id root@$host&>/dev/nullsshroot@$hosthostnamedone3. 开发维护脚本[root@ha1 ~16:42:31]# cd bin/[root@ha1 bin16:42:33]# vim weihu#!/bin/bashfunctionusage(){echo"Usage: weihu cmd COMMAND, 在集群中所有的机器上执行对应COMMAND命令"echo"Usage: weihu copy source target,将本地source文件,推送到集群中所有的机器上"exit}action=$1HOSTLIST='ha1 ha2 proxy1 proxy2 network1 network2'(($#<=1))&&usagecase"$action"in"cmd")# 删除参数1shiftCOMMAND="$*"forhostin$HOSTLISTdosshroot@$host"$COMMAND"done;;"copy")# 删除参数1shiftforhostin$HOSTLISTdoscp$1root@$host:$2done;;*)usage;;esac[root@ha1 bin16:52:01]# chmod +x weihu4. 验证[root@ha1 ~17:04:56]# weihu cmd hostnameha1.han.cloud ha2.han.cloud proxy1.han.cloud proxy2.han.cloud network1.han.cloud network2.han.cloud[root@ha1 ~17:04:59]# weihu copy /etc/hostname /tmphostname100%1621.3KB/s 00:00hostname100%1612.5KB/s 00:00hostname100%1612.5KB/s 00:00hostname100%1613.3KB/s 00:00hostname100%168.6KB/s 00:00hostname100%1612.2KB/s 00:00[root@ha1 ~17:05:18]# weihu cmd cat /tmp/hostnameha1.han.cloud ha1.han.cloud ha1.han.cloud ha1.han.cloud ha1.han.cloud ha1.han.cloud
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 10:18:11

基于聊天记录构建数字人格:工程化实践与隐私优先方案

1. 项目概述&#xff1a;从聊天记录到“数字人格”的工程化实践 你有没有想过&#xff0c;把和某个重要的人的聊天记录&#xff0c;变成一份可以“对话”的数字档案&#xff1f;这听起来像是科幻电影里的情节&#xff0c;但今天&#xff0c;借助开源工具和一点工程化思维&#…

作者头像 李华
网站建设 2026/5/13 10:17:31

终极指南:如何彻底解决Zotero PDF Translate翻译失效问题

终极指南&#xff1a;如何彻底解决Zotero PDF Translate翻译失效问题 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华
网站建设 2026/5/13 10:16:27

零基础Degrees of Lewdity中文汉化完全指南:从准备到精通

零基础Degrees of Lewdity中文汉化完全指南&#xff1a;从准备到精通 对于许多游戏玩家来说&#xff0c;语言障碍常常成为体验国际热门游戏的最大阻碍。Degrees of Lewdity作为一款备受欢迎的角色扮演游戏&#xff0c;其丰富的剧情和互动性让不少国内玩家向往。本文将通过&quo…

作者头像 李华
网站建设 2026/5/13 10:14:26

Airflow Helm Chart:Kubernetes 上部署 Apache Airflow 的生产级实践指南

1. 从零到一&#xff1a;为什么选择 Airflow Helm Chart&#xff1f;如果你正在 Kubernetes 上寻找一个稳定、可扩展的 Apache Airflow 部署方案&#xff0c;并且已经被官方 Helm Chart 的复杂性劝退过&#xff0c;那么你找对地方了。今天要聊的这个airflow-helm/charts项目&am…

作者头像 李华
网站建设 2026/5/13 10:14:24

终极RPG Maker加密资源解密工具:纯前端解决方案深度解析

终极RPG Maker加密资源解密工具&#xff1a;纯前端解决方案深度解析 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项目地址: https://gitco…

作者头像 李华