Shell流程控制中的for循环

for 循环

与其他编程语言类似,Shell支持for循环。

for循环一般格式为:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done


写成一行:

for var in item1 item2 ... itemN; do command1; command2 done;

当变量值在列表里,for循环即执行一次所有命令,使用变量名获取列表中的当前取值。命令可为任何有效的shell命令和语句。in列表可以包含替换、字符串和文件名。

in列表是可选的,如果不用它,for循环使用命令行的位置参数。

例如,顺序输出当前列表中的数字:

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done


输出结果:

The value is: 1

The value is: 2

The value is: 3

The value is: 4

The value is: 5



顺序输出字符串中的字符:

for str in 'This is a string'

do

   echo $str

done

输出结果:

This is a string


shell中的for循环不仅可以用文章所述的方法,

对于习惯其他语言for循环的朋友来说可能有点别扭。

for((assignment;condition:next));do
command_1;
command_2;
commond_..;
done;

如上所示,这里的for循环与C中的相似,但并不完全相同。

通常情况下shell变量调用需要加$,但是for的(())中不需要,下面来看一个例子:

#!/bin/bash
for((i=1;i<=5;i++));do
echo "这是第$i次调用";
done;

执行结果:

这是第1次调用
这是第2次调用
这是第3次调用
这是第4次调用
这是第5次调用

与C中相似,赋值和下一步执行可以放到代码之前循环语句之中执行,这里要注意一点:如果要在循环体中进行for中的next操作,记得变量要加$.....不然程序会变成死循环。





发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(2)

随便点一个地方就提示复制
Eric 7年前 (2018-03-12) 回复
@Eric:已经关了复制插件,现在应该没事了
情空明月 7年前 (2018-04-03) 回复
sitemap