【发布时间】:2020-09-27 19:56:49
【问题描述】:
在 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)-release (x86_64-apple-darwin18) 版权所有 (C) 2007 Free Software Foundation, Inc.
【问题讨论】:
-
help local可能会有所帮助。 -
@Cyrus,谢谢。这就是它所说的“创建一个名为 NAME 的局部变量,并赋予它 VALUE。LOCAL 只能在函数内使用;它使变量 NAME 具有仅限于该函数及其子函数的可见范围。”那么,输入参数呢?
-
它与函数参数无关。它谈论的是
local命令本身的参数。 -
@Barmar,是的,但是为什么“local g”会导致“g”获取函数参数?
-
因为
for g就是这样做的。
标签: bash