將參數傳遞給別名然後否認

將參數傳遞給別名然後否認

我正在嘗試創建一個簡單的別名:

alias draw="pinta &> /dev/null & disown"

這裡的意圖非常明顯。我的問題是,每當我傳遞一個參數時,我都會得到

bash: disown: file.jpg: no such job

pinta 將在未載入檔案的情況下開啟。我如何將我的論點傳遞給pinta,然後否認該任務?

編輯:

我嘗試顯式傳遞參數,如下所示:

alias draw="pinta $* &> /dev/null & disown"

但我得到相同的結果

答案1

使用函數代替:

function draw {
    pinta "$@" &> /dev/null & disown
}

獎金:您應該使用"$@"而不是$*.

假設您有:

function foo {
    echo "1: $1"
    echo "2: $2"
    echo "3: $3"
}

function bar {
    echo '$*'; foo $*
    echo '$@'; foo $@
    echo '"$*"'; foo "$*"
    echo '"$@"'; foo "$@"
}

然後嘗試:

bar "f o o" bar baz

只有"$@"你才能得到正確的行為。

相關內容