passe argumentos para o alias e depois rejeite

passe argumentos para o alias e depois rejeite

Estou tentando criar um alias simples:

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

A intenção aqui é bastante óbvia. Meu problema é que sempre que passo em uma discussão, recebo

bash: disown: file.jpg: no such job

e pinta abre sem o arquivo carregado. Como passo meu argumento para pinta e depois rejeito a tarefa?

EDITAR:

Tentei passar explicitamente os argumentos da seguinte maneira:

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

mas obtenho o mesmo resultado

Responder1

Em vez disso, use uma função:

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

Bônus:Você deve usar "$@"em vez de $*.

Suponha que você tenha:

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

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

Então tente:

bar "f o o" bar baz

Somente com "$@"você você obtém o comportamento adequado.

informação relacionada