Shell流程控制语句for
for语法格式:
1 2 3 4 5 6 7 8 9 | for 变量 in 参数列表 do 命令 done 或者 for 变量 in 参数列表 ; do 命令 done |
for语句流程控制图:
实例:
1 2 3 4 5 6 7 8 9 10 11 | [root@youxi1 ~]# vim a.sh #!/bin/bash for var in a1 a2 b1 b2 do echo $ var done [root@youxi1 ~]# sh a.sh a1 a2 b1 b2 |
参数列表可以更复杂些,部分特殊符号需要转义
1 2 3 4 5 6 7 8 9 10 | [root@youxi1 ~]# vim b.sh #!/bin/bash for var in I\'m "hello world" "c1 c2 d1 d2" do echo $ var done [root@youxi1 ~]# sh b.sh I'm hello world c1 c2 d1 d2 |
参数列表还可以从变量中读取,可以是多个变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@youxi1 ~]# vim c.sh #!/bin/bash list= "e1 e2 f1 f2" list2= "hello world" for var in $list $list2 do echo $ var done [root@youxi1 ~]# sh c.sh e1 e2 f1 f2 hello world |
参数列表还可以从命令中取值
1 2 3 4 5 6 7 8 9 10 11 12 | [root@youxi1 ~]# vim d.sh #!/bin/bash for var in `head -5 /etc/passwd` do echo $ var done [root@youxi1 ~]# sh d.sh root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/ var /adm:/sbin/nologin lp:x:4:7:lp:/ var /spool/lpd:/sbin/nologin |
(1).扩展1:自定义shell分隔符
(2).扩展2:C语言风格的for循环
C语言风格的for语法格式:
1 2 3 4 | for ((变量赋值;条件判断;一次循环完成后执行的操作)) do 命令 done |
注意:变量赋值可以放在for循环外部定义,一次循环完成后执行的操作可以放在循环里面。
实例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [root@youxi1 ~]# vim a.sh #!/bin/bash i=0 for ((;i<=10;)) ; do echo "Num is $i" let i++ done [root@youxi1 ~]# sh a.sh Num is 0 Num is 1 Num is 2 Num is 3 Num is 4 Num is 5 Num is 6 Num is 7 Num is 8 Num is 9 Num is 10 |
另外变量赋值和一次循环完成后执行的操作,这两部分可以存在多个变量操作,实例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@youxi1 ~]# vim a.sh #!/bin/bash for ((a=0,b=5;a<=10;a++,b--)) ; do echo "a-b=" $[a-b] done [root@youxi1 ~]# sh a.sh a-b=-5 a-b=-3 a-b=-1 a-b=1 a-b=3 a-b=5 a-b=7 a-b=9 a-b=11 a-b=13 a-b=15 |
(3).扩展:seq命令
seq命令获取两个数以及之间的所有整数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@youxi1 ~]# vim a.sh #!/bin/bash for i in `seq -5 5` ; do echo $i done [root@youxi1 ~]# sh a.sh -5 -4 -3 -2 -1 0 1 2 3 4 5 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性