Я хотел бы убедиться, что в определенной точке скрипта, после source
создания файла конфигурации, установлены несколько переменных и, если это не так, чтобы остановить выполнение, сообщая пользователю об отсутствующей переменной. я пытался
for var in $one $two $three ; do
...
но если, например $two
, не установлено, цикл никогда не выполняется для $two
. Следующее, что я попробовал, было
for var in one two three ; do
if [ -n ${!var} ] ; then
echo "$var is set to ${!var}"
else
echo "$var is not set"
fi
done
Но если два не установлено, я все равно получаю «два установлено в» вместо «два не установлено».
Как я могу убедиться, что все необходимые переменные установлены?
Обновление / решение: я знаю, что есть разница между «набором» и «набором, но пустым». Теперь я использую (спасибо /programming//a/16753536/3456281 и ответы на этот вопрос) следующее:
if [ -n "${!var:-}" ] ; then
поэтому, если var
установлено, но пусто, оно все еще считается недействительным.
set -u
в начало вашего скрипта, чтобы немедленно завершить его, когда используется неустановленная переменная.