bash Значение по умолчанию для аргумента командной строки - пример
Primary tabs
Forums:
Для получения первого параметра командной строки, можно использовать конструкцию вида:
${1-значениеПоУмолчанию}
или c двоеточием:
${1:-значениеПоУмолчанию}
Что понять разницу, можно создать такие пользовательские команды:
# Считает пустую строку подходящим значением function testDefaultParameter() { echo ${1-'no data here!'} } # Не считает пустую строку подходящим значением function testDefaultParameterNoEmptyLine() { echo ${1:-'no data here!'} }
и вызывать их, напр,, для сравнения (4 вызова):
testDefaultParameter testDefaultParameter "" testDefaultParameterNoEmptyLine testDefaultParameterNoEmptyLine ""
Аргумент в кавычках
Если вам нужно, чтобы аргумент из нескольких слов нормально обрабатывался нижележащей командой, которая ожидает одну строку (напр. как git commit), то можно взять всю конструкцию в кавычки, и при этом убрать их с аргумента по умолчанию (даже если в нем тоженесколько слов), напр:
# передает значение дальше в кавычках, если оно установлено и не пустая строка function testDefaultParameterNoEmptyLine() { git commit -m "${1:-default commit message}" }
Источник идеи: https://stackoverflow.com/a/9333006
- Log in to post comments
- 471 reads