Обратите внимание, что переменная может быть определена, но иметь пустое значение;то есть вы можете различать check_parameter
и check_parameter ""
.
Тем не менее, вы можете обрабатывать, используя расширение одной строки.
check_parameter () {
: ${1?Parameter required}
}
или
check_parameter () {
: ${1:?Non-empty parameter required}
}
В обоих случаях вызов check_parameter
будет иметь статус выхода 1 и отображать данное сообщение об ошибке. Только во втором случае произойдет сбой check_parameter ""
и отобразится сообщение об ошибке.
Обратите внимание, однако, что конструкция вызовет функцию простого возврата при выполнении в интерактивной оболочке. В неинтерактивной оболочке сама оболочка завершится, как только функция вернется, поэтому она немного отличается от явной проверки и использования return
, если переменная не установлена.