37. 使用类似 C 语法的 for 循环
bash for 循环的第二种形式类似于 "C"
编程语言的 for 循环,它具有三个表达式(初始化、条件和更新)。
for (( expr1; expr2; expr3 ))
do
commands
done
- 在第一次迭代之前,对 expr1 进行求值。 这通常用于初始化循环的变量。
- 只要 expr2 的值为
TRUE
,do
和done
之间的所有语句都会重复执行。 - 每次循环迭代后,都会计算 expr3。 这通常用于增加循环计数器。
示例
以下示例展示了如何在 bash for 循环中使用此语法
使用 C
风格循环
使用 bash C 风格的 for 循环生成并显示 5 个随机数:
$ cat for10.sh
for (( i=1; i <= 5; i++ ))
do
echo "Random number $i: $RANDOM"
done
$ ./for10.sh
Random number 1: 23320
Random number 2: 5070
Random number 3: 15202
Random number 4: 23861
Random number 5: 23435
使用 Bash For
进行无限循环
当您在 C 风格的 for 循环中不提供开始、条件和增量时,它将永远执行。 您需要按 Ctrl-C
来停止循环。
$ cat for11.sh
i=1;
for (( ; ; ))
do
sleep $i
echo "Number: $((i++))"
done
Ctrl-C
才能退出此示例:
$ ./for11.sh Number: 1 Number: 2 Number: 3
在 C
风格的 for
循环中使用逗号增加两个值
在 bash C 风格循环中,除了增加条件中使用的值之外,您还可以增加一些其他值或执行一些其他操作。
在 C 风格 for 循环的初始化部分和增量部分中,您可以使用用逗号分隔的多个语句。 本例使用 i
进行控制,并分别操作 j
:
$ cat for12.sh
for ((i=1, j=10; i <= 5 ; i++, j=j+5))
do
echo "Number $i: $j"
done
$ ./for12.sh
Number 1: 10
Number 2: 15
Number 3: 20
Number 4: 25
Number 5: 30