1

Я пытаюсь создать простой псевдоним:

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

Намерение здесь довольно очевидно. Моя проблема в том, что всякий раз, когда я передаю аргумент, я получаю

bash: disown: file.jpg: no such job

и пинта открывается без загруженного файла. Как передать свой аргумент пинте, а затем отказаться от задачи?

РЕДАКТИРОВАТЬ:

Я попытался явно передать аргументы следующим образом:

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

но я получаю тот же результат

1 ответ1

3

Вместо этого используйте функцию:

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

Только с "$@" вы получите правильное поведение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .