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