为什么要“为任何文本?循环四次吗?


9

这是错误还是功能?未引用的字母数字
似乎发生这种情况。

运行GNU bash版本4.1.5

for alpha01234; do echo $((++i)); done

输出:

1
2
3
4

Answers:


14

这是for复合命令的功能,如下所述help for

for: for NAME [in WORDS ... ] ; do COMMANDS; done

对列表中的每个成员执行命令。

for循环将执行的命令的进行中的项目的列表中的每个成员的序列。如果in WORDS ...;不存在,则in "$@"假定为。对于中的每个元素WORDSNAME将设置为该元素,然后COMMANDS执行。

因此,您引用的代码可能是在脚本中执行的,该脚本使用4个参数调用。


谢谢...让我完全烦恼的是它发生在命令行中..实际上我没有在脚本中尝试过..我一定set a b c d在最近一段时间使用过。我经常set在脚本中使用这种方式进行测试。.重新启动终端后,它已停止...(现在有意义)
。– Peter.O 2011年

12

for x; do …是以下操作的快捷方式for x in "$@"; do …:迭代位置参数。如果循环四次,则意味着您有四个位置参数($1$4)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.