2012-01-27 52 views

回答

3

是,使用shift

foo(){ 
    if [[ $1 == 'something' ]]; then 
    shift 
    bar "[email protected]" 
    fi 
} 

foo "[email protected]" 
+0

謝謝! 'foo「$ @」'和'bar「$ @」'真的需要引號嗎? – 2012-01-27 04:39:26

+2

@MishaMoroshko這不是必要的,但你應該總是引用你的變量,除非你明確有理由不這樣做。大多數情況下,你*不需要分詞。我沒有引用'$ 1',因爲'[[]]'裏面沒有分詞問題。我不相信這同樣適用於'[]'雖然 – SiegeX 2012-01-27 05:29:55

+0

一如既往的好信息@SiegeX .. :) +1 – 2012-01-27 07:36:27

3

如果您不需要args陣列爲foo別的,你能避免它完全在SiegeX的答案。如果您因其他原因需要args,您正在做的是最簡單的方法。

代碼中存在一個錯誤。當您撥打bar時,您只傳遞args的第一個元素。要通過所有元素,您需要這樣做:

bar "${args[@]}"