for循环有三种结构:列表for循环,不带列表for循环和类C风格for循环。
do和done之间的命令成为循环体,执行次数和list列表中常熟或字符串的个数相同。for循环,首相是将in后list的第一个常数或字符串复制给循环变量,然后执行循环体,以此执行list,最后执行done命令后的命令序列。
shell支持列表for循环使用略写的计数方式,1~5的范围用{1..5}表示,
shell中还支持按规定的步数进行跳跃的方式实现for循环,例如计算1~100内所有的奇数
一、列表for循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#!/bin/bash #!/bin/bash
for
avrible1
in
{1..5}
sum
=0
do
for
i
in
{1..10..2} ;
do
echo
"hello,welcome $avrible1 times!"
echo
$i
done
done
#!/bin/bash
for
avr
in
二、不带列表
for
循环
#!/bin/bash
echo
"number of
arguments is $
#"
echo
"What you
input is: "
for
argument
in
"$@"
do
echo
"$argument"
done
三、类C语言
for
循环
#!/bin/bash
for
((integer = 1;integer <=5; integer++))
do
echo
"$integer"
done
|
for i in $(cat /tmp/xuexi/iplist);do ./batch.sh $i;done
4、for循环语句的嵌套使用
语法结构:
1
2
3
4
5
6
7
8
9
|
#!/bin/bash
for
变量1
in
<条件列表>
do
for
变量2
in
<条件列表>
do
命令2
done
命令1
done
|
关于for循环嵌套使用打印等腰三角形
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/bin/sh
read
-p
"Please input a number:"
num
read
-p
"Please input the char:"
char
for
((i=1; i<=num; i++));
do
for
((j=num-i; j>0; j--));
do
echo
-n
' '
done
for
((h=1; h<=((2*i-1)); h++))
do
echo
-n
"$char"
done
echo
done
root@node1
shift
]
# ./zsj1.sh
Please input a number:4
Please input the char:@
@
@@@
@@@@@
@@@@@@@
|
在上述等腰三角形的打印过程中分类应用了三个for循环分别是,1、外层for循环用于控制打印三角形的行数,内层第一个for循环用于打印空格数,第三个则是控制字符char的输出个数。三个for循环的使用将等腰三角形成功的打印出来。
注:{1..10..2}取奇数
$# 参数
$@ 脚本输入的参数其岁$#的值的标下而变小,最小值为0
本文转自 CARYFLASH 51CTO博客,原文链接:http://blog.51cto.com/maoxiaoxiong/1840660