1

下面示例中构造 ((..)) 的名称和语法是什么?

for ((i=1;i<10;i++)) do echo $i; done

它有一个奇怪的变量 i
在哪里是 shell 中数字循环的其他结构?

4

3 回答 3

5

除了您列出的C 风格的 for 循环之外,您可以查看Advanced Bash Scripting Guide 的循环部分以获取更多循环构造示例。

也试试:

$ for i in {1..5}; do echo $i; done # range argument
1
2
3
4
5
$ for i in `seq 1 5`; do echo $i; done # iterate over seq command
1
2
3
4
5
于 2010-04-18T04:05:56.233 回答
2

在“Bash 参考手册”(4.0)的第 3.2.4.2 节中,“ ((...))”符号被归类为算术表达式。$((...))它与第3.5.5 节中描述为算术扩展的 ' ' 符号密切相关。§3.2.4.1“循环构造”说:

for还支持命令的另一种形式:

    for (( expr1 ; expr2 ; expr3 )) ; do commands ; done

首先,根据下述规则计算算术表达式 expr1(参见第 6.5 节 [Shell Arithmetic],第 78 页)。然后重复计算算术表达式 expr2,直到其计算结果为零。每次 expr2 计算为非零值时,都会执行命令并计算算术表达式 expr3。如果省略任何表达式,它的行为就好像它的计算结果为 1。返回值是列表中执行的最后一个命令的退出状态,如果任何表达式无效,则返回 false。

于 2010-04-18T04:29:19.200 回答
1

bash(1)手册页,SHELL GRAMMAR部分,复合命令小节。while数字循环的其他选择是until手动增量。

于 2010-04-18T04:04:15.720 回答