将参数传递给别名然后放弃

将参数传递给别名然后放弃

我正在尝试创建一个简单的别名:

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

只有这样"$@"你才能获得适当的行为。

相关内容