Bash Shell循环多次,你需要循环够一定次数。可以使用 while 循环,在计数时进行测试,不过编程语言中的 for 循环正是针对这种情况设计的。那么,如何在 bash 中实现呢?
解决方案
使用 for 循环语法的一种特例,看起来和 C 语言中的差不多,但使用的是双括号。
for (( i=0 ; i < 10 ; i++ )) ; do echo $i ; done
讨论
在早期的 shell 版本中,for 循环只能按照固定的列表项进行迭代。和文件名之类的打交道时,shell 脚本是面向单词的,就此而言,这算得上是一个不错的创新。但如果需要计数,用户会发现自己可能写出了如下代码。
for i in 1 2 3 4 5 6 7 8 9 10
do
echo $i
done
看起来还行,尤其是循环次数不多时。可是说实话,换成 500 次循环可就不好使了。(没错,你可以写成 5×10 的嵌套循环,不过还是不要这样做了吧!)你真正需要的是能够计数的 for 循环。
bash 2.04 版开始引入一种 for 循环的变体,语法与 C 语言类似。其一般形式如下所示。
for (( expr1 ; expr2 ; expr3 )) ; do list ; done
双括号表明这是算术表达式,在其中引用变量时,不用加 $
(但 $1
等位置参数除外),只要是 bash 中出现双括号的地方,均是如此。该表达式是整数表达式,可以使用包括逗号(用于在一个表达式中放入多个操作)在内的大量运算符。
for (( i=0, j=0 ; i+j < 10 ; i++, j++ ))
do
echo $((i*j))
done
for 循环先初始化了两个变量($i
和 $j
),然后在第二个更复杂的子表达式中对 $i
和 $j
求和,接着判断是否小于 10。第三个子表达式再次用逗号运算符累加这两个变量。
酷客网相关文章:
评论前必须登录!
注册