虚拟化容器,大数据,DBA,中间件,监控。

Shell for循环详解

21 12月
作者:admin|分类:脚本编程

Python风格的for循环


Python 风格的 for in 循环的用法如下:

for variable in value_list
do
    statements
done

variable 表示变量,value_list 表示取值列表,in 是 Shell 中的关键字。

每次循环都会从 value_list 中取出一个值赋给变量 variable,然后进入循环体(do 和 done 之间的部分),执行循环体中的 statements。直到取完 value_list 中的所有值,循环就结束了。

Shell for in 循环举例:

#!/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
The sum is 21

 

对 value_list 的说明


取值列表 value_list 的形式有多种,你可以直接给出具体的值,也可以给出一个范围,还可以使用命令产生的结果,甚至使用通配符,下面我们一一讲解。

1) 直接给出具体的值

可以在 in 关键字后面直接给出具体的值,多个值之间以空格分隔,比如1 2 3 4 5"abc" "390" "tom"等。

上面的代码中用一组数字作为取值列表,下面我们再演示一下用一组字符串作为取值列表:

#!/bin/bash
for str in "test1" "test2" "test3" 
do
echo $str
done

运行结果:
test1
test2
test3

 

2) 给出一个取值范围

给出一个取值范围的具体格式为:

{start..end}

start 表示起始值,end 表示终止值;注意中间用两个点号相连,而不是三个点号。根据笔者的实测,这种形式只支持数字和字母。例如,计算从 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

输出结果:
ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz

可以发现,Shell 是根据 ASCII 码表来输出的。

 

3) 使用命令的执行结果

使用反引号``或者$()都可以取得命令的执行结果。例如,计算从 1 到 100 之间所有偶数的和:

#!/bin/bash

sum=0

for n in $(seq 2 2 100)
do
((sum+=n))
done

echo $sum

运行结果:
2550

seq 是一个 Linux 命令,用来产生某个范围内的整数,并且可以设置步长,不了解的读者请自行百度。seq 2 2 100表示从 2 开始,每次增加 2,到 100 结束。

再如,列出当前目录下的所有 Shell 脚本文件:

#!/bin/bash

for filename in $(ls *.sh)
do
echo $filename
done

运行结果:
demo.sh
test.sh
abc.sh

 

浏览405 评论0
返回
目录
返回
首页
Shell 字符串使用与操作 RAC环境部署自动化shell脚本