passar argumentos para alias e depois ignorar

0

Estou tentando criar um alias simples:

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

A intenção aqui é bastante óbvia. Meu problema é que sempre que eu passo um argumento, recebo

bash: disown: file.jpg: no such job

e pinta abre sem o arquivo carregado. Como eu passo meu argumento para pinta e depois desisto da tarefa?

EDITAR:

Eu tentei passar explicitamente os argumentos da seguinte forma:

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

mas obtenho o mesmo resultado

    
por ewok 28.07.2014 / 18:34

1 resposta

3

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 "$@"
}

Em seguida, tente:

bar "f o o" bar baz

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

    
por 28.07.2014 / 18:40

Tags