BASH: функция проверки значения элемента в массиве

Автор: | 06/04/2014
 

terminalИмеется несколько системных переменных, наличие которых необходимо проверить перед выполнением определённого скрипта.

Предположим, эти переменные — $sysvar1, $sysvar2, $sysvar3 и $sysvar3.

Создадим массив, в котором перечислим переменные для проверки:

variables=( [1]=$sysvar1 [2]=$sysvar2 [3]=$sysvar3 [4]=$sysvar3 )

И используем цикл for для проверки значения каждого элемента:

for var in "${variables[@]}"; do [[ "$var" ]] && echo "$var" || echo "Empty var!"; done

Теперь оформим всё это в один скрипт:

$ cat bin/assertions.sh
#!/usr/bin/env bash

variables=( [1]=$sysvar1 [2]=$sysvar2 [3]=$sysvar3 [4]=$sysvar3 )

checkvars () {

local var

for var in "$@"
do
  [[ "$var" ]] && echo "Var exist: $var;"
    || echo "Empty var!"
done
}

checkvars "${variables[@]}"

Проверим:

$ ./bin/assertions.sh
Empty var!
Empty var!
Empty var!
Empty var!

Создадим одну переменную:

$ export sysvar1=sysvar1
$ echo $sysvar1
sysvar1
$ ./bin/assertions.sh
Var exist: sysvar1;
Empty var!
Empty var!
Empty var!
$ export sysvar2=sysvar2
$ ./bin/assertions.sh
Var exist: sysvar1;
Var exist: sysvar2;
Empty var!
Empty var!