bash中的-n参数是什么local -n var...意思?- 它与什么不同local var...
我找不到一个很好的例子/解释。没有关键字的手册页(看起来?)。我发现的最接近的是这里的评论:local: -n: invalid option - 这表明不使用!参数扩展
遗憾的是,参数 tolocal没有记录在 中help local,而是记录在help declare:
Run Code Online (Sandbox Code Playgroud)`-n` make NAME a reference to the variable named by its value
它是如何工作的?
`-n` make NAME a reference to the variable named by its value
Run Code Online (Sandbox Code Playgroud)
您可以通过间接实现类似的行为!(这就是链接问题中的评论的含义):
#! /bin/bash
f () {
local -n x=y
y=12
x=42
echo $x $y # 42 42
}
f
Run Code Online (Sandbox Code Playgroud)
-n将变量声明为nameref:
\n\n可以使用或内置命令的选项(请参阅Bash 内置命令)为变量分配nameref属性,以创建nameref或对另一个变量的引用。这允许间接操纵变量。每当 nameref 变量被引用、赋值、取消设置或修改其属性时(除了使用或更改 nameref 属性本身),操作实际上是对 nameref 变量\xe2\x80\x99s 值指定的变量执行。nameref 通常在 shell 函数中使用来引用其名称作为参数传递给函数的变量。例如,如果将变量名作为第一个参数传递给 shell 函数,则运行
\n-ndeclarelocalRun Code Online (Sandbox Code Playgroud)\ndeclare -n ref=$1\n函数内部创建一个 nameref 变量ref,其值是作为第一个参数传递的变量名。对ref的引用和赋值以及对其属性的更改均被视为对其名称作为 传递的变量的引用、赋值和属性修改
\n$1。
值得注意的是,namerefs 和-n是在 Bash 5(2019 年 1 月)中添加的。
| 归档时间: |
|
| 查看次数: |
2857 次 |
| 最近记录: |