2013-04-08 34 views
0

如果我做解析函數參數的目的是什麼?

#!/bin/bash 

a=2 
func() { 
    echo $a 
    echo $b 
} 

b=3 
func $b 

然後打印2\n3,在那裏我會只3預期。

問題

當全局可用的內部功能。在BASH中解析參數的目的是什麼?

+0

功能之外聲明的變量將永遠是全球性的。 – devnull 2013-04-08 13:10:46

回答

2

您將參數傳遞給函數,以便它們可以使用不同的參數值。

您的代碼沒有使用傳遞的參數,而是使用全局變量。考慮替代:

#!/bin/bash 

a=2 
b=3 

func() { 
    echo $1 
} 

func ${a} 
func ${b} 

產量:

2 
3 
3

擊不喜歡這個工作。 你沒有在函數中使用任何參數。相反,你剛剛初始化了兩個全局變量,你稍後在函數中迴應。

爲了做你需要,你應該做什麼以下幾點:

#!/bin/bash 

a=2 
func() { 
    # first argument 
    echo $1 
    # second argument 
    echo $2 
} 

b=3 
func $b 
func $a $b 

輸出:

3 

2 
3 
相關問題