【发布时间】:2019-01-15 18:09:49
【问题描述】:
我想在函数中使用全局变量,但不希望更改超出函数范围。所以我定义了一个局部变量,初始化为全局变量的值。全局变量有一个很好的名字,所以我想在局部变量上使用相同的名字。这在 Bash 中似乎可行,但我不确定这是否是未定义的行为。
#!/bin/bash
a=3
echo $a
foo() {
local a=$a ## defined or undefined?
a=4
echo $a
}
foo
echo $a
给出输出:
3
4
3
【问题讨论】:
-
真的很奇怪的问题。为什么不尝试自己看看会发生什么:a=3;echo $a;foo(){ local a=$((a-2));回声 $a ; a=4;echo $a;};foo;echo $a