Мне нужно проверить, установлены ли определенные переменные среды перед запуском моего скрипта. Я использую технику из этого ответа :
if [ -z ${var1+x} ]
echo "var1 not set"
exit 1
fi
Это хорошо работает для строковых переменных, но есть параметр, который должен быть массивом. Он должен быть установлен, но может быть пустым.
foo=("foo" "bar" "baz")
[ -z ${foo+x} ] # false
bar=()
[ -z ${bar+x} ] # true
[ -z ${baz+x} ] # also true
Итак, мой вопрос, как мне объявить пустой массив, чтобы отличать его от неустановленной переменной. Я также хотел бы проверить, является ли переменная массивом (пустой или нет) или не массивом (установлен или не установлен).