考慮以下代碼,我定義了兩個函式,func1和func2:
func1 ( ) {
local FLAGS=${1}
echo "func1 $FLAGS"。
}
func2() {
local FLAGS=${1}
echo "func2 $FLAGS"。
func1 $FLAGS"。
}
FLAGS="-p -i"
func1$FLAGS
func2 $FLAGS[/span
func1 "-p -i"/span>
func2 "-p -i"/span>
目的是向它們傳遞一個引數,在這種情況下FLAGS="-p -i"。我希望上面的四個呼叫都是等價的。然而,我得到的輸出是這樣的:
func1 -p
func2 -p
func1 -p
func1 -p -i
func2 -p -i
func1 -p
這告訴我,每當引數被保存到一個變數中時,它就會被決議,并且只有前面的白色空格部分被傳遞到函式中。我的問題是為什么會發生這種情況,以及如何將整個$FLAG引數傳遞給函式,而不管它是否包含空格?
uj5u.com熱心網友回復:
改變
func1 $FLAGS
to
func1 "$FLAGS"
不加引號,'-p'是1美元,'-i'是2美元
uj5u.com熱心網友回復:
我的問題是為什么會發生這種情況
這就是它的作業原理。
這就是它的作業原理。
以及如何將整個$FLAG引數傳遞到函式中
像這樣:
func1 "$FLAGS"/span> func2 "$FLAGS"。或者像這樣改變你的函式:
func1 ( ) { local FLAGS=${@} echo "func1 $FLAGS"。 } func2() { local FLAGS=${@} echo "func2 $FLAGS"。 func1 $FLAGS"。 }轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/324757.html
標籤:
