0
function f(){
local y=$1;
local z=$2;
echo $x $y $z;
}
function main(){
x=1;
y=2;
z=3;
f $y $z;
}
main $*
我的输出为1 2 3通变量在bash功能(奇怪的输出?)
为什么会出现这种情况?我只传递了两个变量y和z。
$ 1将从main中返回y,即2返回到函数f local y = $ 1将会返回y = 2。对于局部z = $ 2同样的事情,它会是z = 3。
所以我会,因为我想呼应$ X是不是有效的变量假设有错误或者我应该得到2 3
为什么它呼应了1 2 3?
我是新来的bash,你能告诉我是什么使它成为一个全局变量? 事实上,我没有将它作为主要地方声明,或者美元符号以某种方式使其成为全球变量?我很困惑。这与我习惯的Java不同。 – user1880760 2013-02-20 21:15:23
我添加了一个新函数: function g(){ echo $ x; } 它没有打印出任何东西,所以从你所说的话它应该打印出x是1,但是只有从主get得到的函数f输出的回声。 – user1880760 2013-02-20 21:19:59
这就是bash的工作方式:除非声明为本地,否则变量是全局的。美元符号就是您如何访问变量的值;它与范围无关。 – chepner 2013-02-20 21:21:15