2012-05-04 59 views
1

的功能我已經定義了以下兩個功能我.bash_functions(它獲取來源爲.bashrc):.bash_functions:調用從另一個

up() { 
    if (($# == 0)); then 
    cd .. 
    else 
    for basename; do 
     local result=$(_foo) 
     echo $result 
     cd $result 
    done 
    fi 
} 

_foo() { 
    echo ${PWD%/$1/*}/$basename 
} 

雖然我可以執行_foo,當我執行up,沒有按起來似乎不知道_foo。我在這裏做錯了什麼,或者這是不可能的?

回答

1

它確實知道_foo,但是您不會傳遞參數到_foo,所以可能會導致混淆。

+1

它看到'basename'就好了。變量是全局的,除非聲明爲本地。問題是'_foo()'需要一個參數('$ 1'),並且沒有通過一個參數。順便說一句,這就是你的例子實際上所展現的。 –

+0

嗯..那是愚蠢的。更新。 thx –

1

Bash腳本按順序執行。在你的情況下,_foo()可以在up()之前定義,一切都應該正常工作。

+1

只要它們在被定義後被調用,它們就定義了什麼順序並不重要。 'up(){_foo; }; _foo(){echo「bar」; }; up'工作得很好。 –

+0

謝謝@DennisWilliamson。我不知道。 – DerMike