for 循环
Shell 脚本里最简单的循环当属 for 循环,有编程基础的朋友应该都有使用过 for 循环。最简单的 for 循环如下所示,你只需将变量值依次写在 in 后面即可:
- #!/bin/bash
- for num in 1 2 3 4
- do
- echo $num
- done
如果要循环的内容是字母表里的连续字母或连续数字,那么就可以按以下语法来写脚本:
- #!/bin/bash
- for x in {a..z}
- do
- echo $x
- done
while 循环
除了 for 循环,Shell 同样提供了 while 循环。对于其它语言,如果你见过 for 循环却没见过 while 循环,那么你一定是学了个假语言。
在 while 循环里,每进行一次循环,条件都会被判断一次,来确定本次循环是否该继续。其实在循环次数比较少的情况下,for 循环与 while 循环效果差不多,但如果循环次数比较多,比如 10 万次,那么 while 循环的优势就体现出来了。
- #!/bin/bash
- n=1
- while [ $n -le 4 ]
- do
- echo $n
- ((n++))
- done
循环套循环
像其它高级语言一样,循环是可以互相嵌套的。比如下面这个例子,我们在 while 循环里再套入一个 for 循环:
- #!/bin/bash
- n=1
- while [ $n -lt 6 ]
- do
- for l in {a..d}
- do
- echo $n$l
- done
- ((n++))
- done
这个脚本执行的结果应该是 1a, 1b, 1c, 1d, 2a, 2b … 5d。
循环的内容是变化的
我们上面提到的 for 循环,循环变量要赋的值都列在了 in 后面的列表里了。但这样灵活性太差,因为在很多情况下,循环变量要获得的值是不固定的。
就比如,有个变量要获得当前系统上所有用户,但因为每台电脑用户都不一样,我们根本就没办法将这个变量写死。