#bash #shell #variables
#bash #оболочка #переменные
Вопрос:
У меня в моем скрипте большое количество переменных, и я хочу, чтобы скрипт выдавал ошибку, если какая-либо из переменных пуста.
Я знаю, что могу:
if [[ -z "$var_1" ]] || [[ -z "$var_2" ]] || ... [[ -z "$var_n" ]]; then
# failure message
fi
Однако я не могу сообщить пользователю, какая переменная была пустой, если я сделаю это таким образом. Существует ли альтернативный подход к вышесказанному, чтобы я мог информировать пользователя о пустой переменной?
Ответ №1:
#!/bin/sh
foo=(var_1 var_2 var_n)
for bar in ${foo[*]}
do
if [[ ! ${!bar} ]]
then
echo $bar is empty
fi
done
Ответ №2:
Просто используйте ${var:?var is empty or unset}
первый раз, когда вы ссылаетесь на переменную. Если пустые строки приемлемы, и вам важно только, установлены ли переменные, сделайте ${var?var is unset}
. Использование ?
в расширении параметра приводит к завершению работы оболочки, и если переменная (пуста или) не установлена.