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

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

这是一个错误还是一个功能?
这似乎发生在未引用的字母数字。

运行 GNU bash,版本 4.1.5

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

输出:

1
2
3
4

答案1

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

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

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

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

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

答案2

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

相关内容