for语法格式:

for 变量 in 参数列表
do
命令
done 或者
for 变量 in 参数列表 ; do
命令
done

  for语句流程控制图:

  实例:

[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

  参数列表可以更复杂些,部分特殊符号需要转义

[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

  参数列表还可以从变量中读取,可以是多个变量

[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

  参数列表还可以从命令中取值

[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分隔符

自定义Shell分隔符

(2).扩展2:C语言风格的for循环

  C语言风格的for语法格式:

for ((变量赋值;条件判断;一次循环完成后执行的操作))
do
命令
done

  注意:变量赋值可以放在for循环外部定义,一次循环完成后执行的操作可以放在循环里面。

  实例如下:

[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

  另外变量赋值和一次循环完成后执行的操作,这两部分可以存在多个变量操作,实例如下:

[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命令获取两个数以及之间的所有整数

[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

  

最新文章

  1. Maven间接依赖冲突解决办法
  2. WebView中Js与Android本地函数的相互调用
  3. 阿里云服务器上安装mysql的心路历程(博友们进来看看哦)
  4. HTML基础和表格
  5. SQL 数据库基础语句
  6. jquery实时监听某个文本框的输入事件
  7. python选择排序实现与C选择排序实现
  8. CXF详细介绍
  9. C++习题 对象数组求最大值
  10. 关于oracle12c对RAW裸设备的支持?
  11. 最火的Android开源项目(一)
  12. [转载] 文件锁(Filelock)与锁定映射文件部分内容
  13. Project facet is Java version 1.7 is not spported
  14. 洛谷P4431
  15. slurm作业提交系统常用命令
  16. C#控件——批量化隐藏或显示同类型控件
  17. Maven 生成可执行的jar包
  18. Go基础系列:struct的导出和暴露问题
  19. Solr数据迁移
  20. ionic3 打包一个已签名的apk

热门文章

  1. sqlzoo易错题
  2. javascript原生图片懒加载
  3. 调试中行支付demo
  4. Unity进阶之ET网络游戏开发框架 07-修正游客登录的异步BUG
  5. Python3 - 基础(运算符)
  6. cifar-10数据集的可视化
  7. learning java Paths Path
  8. Lightning Web Components 开发指南(二)
  9. Xamarin 自定义OnKeyDown 再按一次退出程序的实现
  10. 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约