这是一个错误还是一个功能?
这似乎发生在未引用的字母数字。
运行 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 "$@"
假定。对于 中的每个元素WORDS
,NAME
设置为该元素,然后COMMANDS
执行。
因此,您引用的代码可能是在使用 4 个参数调用的脚本中执行的。
答案2
for x; do …
是 的快捷方式for x in "$@"; do …
:它迭代位置参数。如果它循环四次,则意味着您有四个位置参数($1
到$4
)。