我正在嘗試創建一個簡單的別名:
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
只有"$@"
你才能得到正確的行為。