为什么 'for anytext; 循环四次?

Pet*_*r.O 9 shell bash control-flow

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

运行 GNU bash,版本 4.1.5

for alpha01234; do echo $((++i)); done
Run Code Online (Sandbox Code Playgroud)

输出:

1
2
3
4
Run Code Online (Sandbox Code Playgroud)

man*_*ork 14

这是for复合命令的一个特性,如下所述help for:

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

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

该for循环为项目列表中的每个成员执行一系列命令。如果in WORDS ...;不存在,则in "$@"假定。对于 中的每个元素WORDS,NAME都设置为该元素,并COMMANDS执行 。

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


Gil*_*il' 12

for x; do …是一个快捷方式for x in "$@"; do …:它遍历位置参数。如果它循环四次,则意味着您有四个位置参数($1通过$4)。