Bash Shell循环多次

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。第三个子表达式再次用逗号运算符累加这两个变量。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!