在bash中,似乎您可以使用"local"关键字来引用函数的输入参数。这是记录在案的行为吗?如果是这样,我在哪里可以阅读它?
$ f() { local g; for g; do echo $g; done; }
$ f foo bar
foo
bar
据 https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html
本地 [选项] 名称 [=值] ... 对于每个参数,将创建一个名为 name 的局部变量,并为其分配值。
但是如果没有提供其他值,我看不到将函数的 $1、$2 等分配给变量。
我更熟悉这样做:
for g in "$@"
这两种方式更好吗?更交叉兼容?
我在 macOs 10.14 上的狂欢:
GNU bash,版本 3.2.57(1(发布(x86_64-apple-darwin18( 版权所有 (C( 2007 自由软件基金会。
这与local
命令无关。使用不带in
子句的for
命令时,它默认循环访问位置参数。
for g
相当于
for g in "$@"
这是在 Bash 手册中
如果"in words">不存在,则
for
命令会针对设置的每个位置参数执行一次命令,就像指定了in "$@"
一样(请参阅特殊参数(。