Shell脚本-for循环和for in循环

for 循环

for((exp1; exp2; exp3))
do
    statements
done

几点说明:

  • exp1、exp2、exp3 是三个表达式,其中 exp2 是判断条件,for 循环根据 exp2 的结果来决定是否继续下一次循环;
  • statements 是循环体语句,可以有一条,也可以有多条;
  • dodone 是 Shell 中的关键字。
代码:计算从 1 加到 100 的和。
#!/bin/bash
sum=0
for ((i=1; i<=100; i++))
do
    ((sum += i))
done
echo "The sum is: $sum"

输出:

The sum is: 5050

for in 循环

for variable in value_list
do
    statements
done

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

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

代码1
#!/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 的说明

1) 直接给出具体的值

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

代码:
#!/bin/bash
for str in "aaa" "bbb" "ccc" "ddd"
do
    echo $str
done

输出:

aaa
bbb
ccc
ddd
2) 给出一个取值范围

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

{start..end}

start 表示起始值,end 表示终止值;注意中间用两个点号相连,而不是三个点号。根据笔者的实测,这种形式只支持数字和字母。

代码1:计算从 1 加到 100 的和
#!/bin/bash
sum=0
for n in {1..100}
do
    ((sum+=n))
done
echo $sum

输出:

5050
代码2:输出从 A 到 z 之间的所有字符:
#!/bin/bash
for c in {A..z}
do
    printf "%c" $c
done

输出:

ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz

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

3) 使用命令的执行结果
代码1:计算从 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 结束。

代码2:列出当前目录下的所有 Shell 脚本文件:
#!/bin/bash
for filename in $(ls *.sh)
do
    echo $filename
done

输出:

demo.sh
test.sh
abc.sh
4) 使用 Shell 通配符

Shell 通配符可以认为是一种精简化的正则表达式,通常用来匹配目录或者文件,而不是文本

代码:显示当前目录下的所有脚本文件
#!/bin/bash
for filename in *.sh
do
    echo $filename
done

输出:

demo.sh
test.sh
abc.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值