Как установить значение по умолчанию для параметра в bash_aliases

У меня есть следующая функция. Когда я запускаю это, я получаю ошибку Default Message command not found.

commit {
    ${1:-Default Message}
    echo "git add ."
    git commit -m '$1'
}

Я просто не хочу устанавливать значение строки по умолчанию в последней команде, если не указан параметр.

Вот как я собираюсь использовать функцию в терминале:

commit результат должен быть: git commit -m 'Default Message'

commit some random message результат должен быть: git commit -m 'some random message'

Пожалуйста, руководство.

0
задан 9 July 2019 в 12:52

1 ответ

Некоторые проблемы здесь:

  • Функциональное определение в потребностях удара () после имени функции
  • ${1:-Default Message} возвраты любой содержание $1 (если это дано), или данное значение по умолчанию.Примечание: это возвращает его. Таким образом, это совпадает с, если Вы записали:

    if [ -n "$1" ]; then
        $1
    else
        Default Message
    fi
    

    удар является немым, таким образом, он попытается просто выполнить "сообщение По умолчанию" как команду. Очевидно, нет такой команды, следовательно Ваше сообщение об ошибке.

  • Последняя строка (git commit -m '$1') будет использовать литерал $1 (читайте: один доллар) как сообщение о фиксации, потому что одинарные кавычки использовались и они не разворачивают переменные в них.

Попробуйте это вместо этого:

commit() {
    msg="${1:-Default Message}"
    echo "git add ."
    git commit -m "$msg"
}

Или:

commit() {
    echo "git add ."
    git commit -m "${1:-Default Message}"
}
1
ответ дан 24 October 2019 в 00:29

Другие вопросы по тегам:

Похожие вопросы: