Подтвердить что ты не робот

Как проверить, определены ли несколько переменных или нет в bash

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

что-то вроде:

if [ ! $DB=="" && $HOST=="" && $DATE==""  ]; then
  echo "you did not set any variable"
   exit 1;
else
  echo "You are good to go"
fi      
4b9b3361

Ответ 1

Вы можете использовать -z для проверки того, что переменная не установлена ​​или пуста:

if [[ -z $DB || -z $HOST || -z $DATE ]]; then
  echo 'one or more variables are undefined'
  exit 1
fi

echo "You are good to go"

Как вы использовали tag, я использовал расширенный тест [[, что означает, что мне не нужно использовать кавычки вокруг моих переменных. Я предполагаю, что для продолжения нужно указать все три переменные. exit в ветки if означает, что else является излишним.

Стандартный способ сделать это в любой POSIX-совместимой оболочке будет следующим:

if [ -z "$DB" ] || [ -z "$HOST" ] || [ -z "$DATE" ]; then
  echo 'one or more variables are undefined'        
  exit 1
fi

Важные отличия здесь в том, что каждая проверка переменных проходит внутри отдельного теста и что вокруг каждого расширения параметра используются двойные кавычки.

Ответ 2

Вы также можете проверить это, поместив имя переменной в файл.

DB=myDB
HOST=myDB
DATE=myDATE

затем проверьте их, если в данный момент они empty или не unset

#!/bin/bash
while read -r line; do
    var='echo $line | cut -d '=' -f1'
    test=$(echo $var)
    if [ -z "$(test)" ]; then 
        echo 'one or more variables are undefined'
        exit 1
    fi
done <var.txt
echo "You are good to go"