for循环

浏览:18
jackios 2020-07-18 09:21

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




如果觉得我的文章对你有用,请随意赞赏

待完善
不要去追一匹马,用追马的时间种草,待到春暖花开时,就会有一批骏马任你挑选;不要去刻意巴结一个人,用暂时没有朋友的时间,去提升自己的能力,待到时机成熟时,就会有一批的朋友与你行。用人情做出来的朋友只是暂时的,用人格吸引来的朋友才是长久的。所以种下梧桐树,引得凤凰来。你若盛开,蝴蝶自来,你若精彩,天自安排
微信扫码登录测试

Powered by Jackios V1.0 Copyright © 2019-2020 liuql 版权所有 备案号: 鲁ICP19026293号