
除了while循环和直到循环外,Shell脚本还提供了for循环,这些循环更灵活shell脚本执行for循环,更易于使用且更简洁. 使用Shell进行循环有两种形式,下面我们将一一解释. 循环的C语言样式循环的C语言样式的用法如下:
for(((exp1; exp2; exp3))
做
声明
完成
一些注意事项:
它的运行过程是:
1)首先执行exp1.
2)再次执行exp2,如果判断结果为是,则在循环体内执行该语句,否则结束整个for循环.
3)在执行循环体后执行exp3.
4)重复步骤2)和3),直到exp2的判断结果不成立并且循环结束.
在上述步骤中,将2)和3)组合起来算作一个循环,此过程将重复进行. for语句的主要功能是连续执行步骤2)和3).
exp1仅在第一个循环中执行,以后将不再执行,可以将其视为初始化语句. exp2通常是一个关系表达式,它确定是否继续下一个循环,称为“循环条件”. 在很多情况下,exp3是带有自增或减运算的表达式,因此循环条件逐渐变为“不正确”.
for循环的执行过程可以用下图表示:

在这里我们举一个实际的例子,计算从1到100的总和.
#!/bin/bash
sum=0
for ((i=1; i<=100; i++))
do
((sum += i))
done
echo "The sum is: $sum"
运行结果:
总和是: 5050
代码分析:
1)执行for语句时,首先给变量i赋值1,然后判断i <= 100是否为真;因为此时i = 1,所以i <= 100为真. 接下来,将执行循环主体中的语句. 执行循环体(总和为1)后,将计算i ++.
2)在第二个循环中,i的值为2,建立i <= 100,并继续执行循环体. 执行完循环体(总值为3)后,请计算i ++.
3)重复步骤2),直到第101个循环,此时i的值为101,i <= 100不再为真,因此结束循环.
由此我们可以得出结论,for循环的一般形式是:
for((初始化语句;判断条件;自增还是自减))
做
声明
完成
for循环中的三个表达式: for循环中的exp1(初始化语句),exp2(判断条件)和exp3(递增或递减)都是可选的,可以省略(但分号;必须保留)

1)修改“从1到100的和”的代码,并省略exp1:
#!/bin/bash
sum=0
i=1
for ((; i<=100; i++))
do
((sum += i))
done
echo "The sum is: $sum"
您可以看到i = 1已移至for循环之外.
2)如果省略exp2,则没有判断条件. 如果不执行其他任何处理,它将变成无限循环. 我们可以在循环体内使用break关键字来强制循环结束:
#!/bin/bash
sum=0
for ((i=1; ; i++))
do
if(( i>100 )); then
break
fi
((sum += i))
done
echo "The sum is: $sum"
break是shell中的一个关键字,用于结束循环,将在后续章节中进行深入说明.
3)如果省略exp3,则不会修改exp2中的变量. 在这种情况下,您可以添加一条语句来修改循环体中的变量. 例如:
#!/bin/bash
sum=0
for ((i=1; i<=100; ))
do
((sum += i))
((i++))
done
echo "The sum is: $sum"
4)最后,我将向您展示一个更极端的示例,同时省略三个表达式:
#!/bin/bash
sum=0
i=0
for (( ; ; ))
do
if(( i>100 )); then
break
fi
((sum += i))
((i++))
done
echo "The sum is: $sum"
这种写作方式没有实际意义,只是给你一个示范. 循环中的Python样式循环中的Python样式的用法如下:
value_list中的变量
做
声明

完成
变量表示变量,value_list表示值列表,in是Shell中的关键字.
可以省略value_list部分中的
,省略后的效果等同于$ @,本文末尾将详细说明. ”
每个循环将从value_list中获取一个值并将其分配给变量变量,然后输入循环主体(do和done之间的部分),并在循环主体中执行语句. 直到取完value_list中的所有值,循环才结束.
Shell for in loop示例:
#!/bin/bash
sum=0
for n in 1 2 3 4 5 6
do
echo $n
((sum+=n))
done
echo "The sum is "$sum
运行结果:
1
2
3
4
5
6

总和是21
value_list的解释值列表的形式很多. 您可以直接指定一个特定的值或范围,也可以使用命令的结果,甚至可以使用通配符. 让我们一一解释. . 1)可以在in关键字之后直接给出特定值. 具体值可以直接给出. 多个值之间用空格隔开,例如1 2 3 4 5,“ abc”,“ 390”,“ tom”等.
上面的代码使用一组数字作为值列表. 让我们演示一组字符串作为值列表:
#!/bin/bash
for str in "C语言中文网" "http://c.biancheng.net/" "成立7年了" "日IP数万"
do
echo $str
done
运行结果:
C语言中文网
7岁
每日IP数以万计2)给出一个值范围值范围的具体格式为:
{start..end}
start表示开始值,end表示结束值;请注意,两个点连接在中间,而不是三个点. 根据作者的实际测量,该表格仅支持数字和字母.
例如shell脚本执行for循环,要计算1到100的总和:
#!/bin/bash
sum=0
for n in {1..100}
do
((sum+=n))
done
echo $sum
运行结果:
5050
另一个示例,将所有字符从A输出到z:
#!/bin/bash
for c in {A..z}
do
printf "%c" $c
done
输出结果:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-233918-1.html