我从https://unix.stackexchange.com/a/175845/674读取命令
为什么可以
$ bash -c 'for f do echo "$f";done' bash a b c
a
b
c
Run Code Online (Sandbox Code Playgroud)
输出与
$ bash -c 'for f in "$@"; do echo "$f";done' bash a b c
a
b
c
Run Code Online (Sandbox Code Playgroud)
?
为什么 for 循环不需要明确指定
循环变量的值集,如in "$@"
和
;
?
谢谢。
从bash 手册页:
对于名称 [ [ 在 [ 字 ... ] ] ; ] 做清单;完毕
in 后面的单词列表被扩展,生成一个项目列表。变量名依次设置给这个列表的每个元素,并且每次都执行列表。如果省略 in 字,则 for 命令对设置的每个位置参数执行一次 list(参见下面的参数)。...
然后从参数部分:
位置参数是由一位或多位数字表示的参数,而不是单个数字 0。位置参数是在调用时从 shell 的参数分配的,并且可以使用 set 内置命令重新分配。...
总之,in
关键字和后面的分号是可选的。如果省略in
关键字,则for
循环的参数取自传递给 shell 的参数。因此,您提供的两个代码示例是等效的。
归档时间: |
|
查看次数: |
603 次 |
最近记录: |