您的位置:首页 > 运维架构 > Shell

shell脚本下的循环语句for、while、until

2017-03-29 18:14 1191 查看
在shell 脚本下的for循环语句

第一种格式:

for curvar in list
do
statements
done


对于list中的每一个值都要执行一次statments时应利用这种格式,对每次循环都是把list中的当前值赋值给变量curvar,list可以是含有几个项的变量也可以是用空格分隔的值表。

实例1:打印1~6

[admin@localhost Linux]$ vim 1.bat
[admin@localhost Linux]$ cat 1.bat
for i in 1 2 3 4 5 6
do
echo $i
done
[admin@localhost Linux]$ bash 1.bat
1
2
3
4
5
6


实例2:当然在这种格式下我们对在命令行给出的实参的字符串循环打印出来

[admin@localhost Linux]$ vim 2.bat
[admin@localhost Linux]$ cat 2.bat
for thing in "$@"
do
echo you typed ${thing}.
done
[admin@localhost Linux]$ bash 2.bat sdfgg lll jjj
you typed sdfgg.
you typed lll.
you typed jjj.


实例3:也可以将目录下的文件都打印出来

为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来

[admin@localhost 3_29_SC]$ vim 3.bat
[admin@localhost 3_29_SC]$ cat 3.bat
#display dir ->file
for x in /admin/Linux/3_29_SC/*
do
echo  $(basename $x) is file in /admin/Linux
done
[admin@localhost 3_29_SC]$ bash 3.bat
1.bat 1.c 2.bat 2.c 3.bat is file in /admin/Linux


第二种:采用C语言for循环的方式打印1~10

[admin@localhost 3_29_SC]$ vim 4.bat
[admin@localhost 3_29_SC]$ cat 4.bat
#display 1~10
for((i=1;i<=10;i++))
do
echo $i
done
[admin@localhost 3_29_SC]$ bash 4.bat
1
2
3
4
5
6
7
8
9
10


实例2:打印1~10并且对1~10求和

[admin@localhost 3_29_SC]$ vim 5.bat
[admin@localhost 3_29_SC]$ cat 5.bat
#diplay 1~10and sum
for((i=1;i<=10;i++))
do
echo $i
let "sum=sum+i"
done
echo $sum
[admin@localhost 3_29_SC]$ bash 5.bat
1
2
3
4
5
6
7
8
9
10
55


while循环

while语句用来当指定的条件为真时进行一系列的命令,一旦条件判断为假,循环就立即终止。如果所指定条件一开始就为假,则不会执行循环

Linux下

-eq 等于

-ne 不等于

-gt 大于

-ge 大于等于

-lt 小于

-le 小于等于

实例1:利用while循环打印1~10

[admin@localhost 3_29_SC]$ vim 6.bat
[admin@localhost 3_29_SC]$ cat 6.bat
#use while to display 1~10
i=1
while [ $i -lt  11 ]
do
echo $i
let "++i"
done
[admin@localhost 3_29_SC]$ bash 6.bat
1
2
3
4
5
6
7
8
9
10


关于until 语句

until语句是和while语句的判断相反,条件为假时才进入循环

[admin@localhost 3_29_SC]$ vim 8.bat
[admin@localhost 3_29_SC]$ cat 8.bat
#until
i=1
until [ $i -gt 10 ]
do
echo $i
let "++i"
done
[admin@localhost 3_29_SC]$ bash 8.bat
1
2
3
4
5
6
7
8
9
10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: