0

This question very similar to this.

In BASH, I want to check whether all the variables/arrays are properly set before I proceed.

I have a little script (check-variables) that does this successfully with ordinary variables, but not arrays.

How can I make it work for arrays too?

cat check-variables

#!/bin/bash
# This script checks to see if variables have been set and reports their value.
flag=0
for which_variable in "${@}" ; do
if [ -z "${!which_variable:-}" ]; then
    if [ "${!which_variable+defined}" = defined ]; then
    echo -e "$which_variable is \"\", but set "
    else
        if [[ -v ${!which_variable} ]]; then
            echo -e "array $which_variable set"
        else
        flag=1
        echo  -e "$which_variable is not set"
        fi
    fi
else
     echo -e "$which_variable = \"${!which_variable}\" "
fi
done
exit $flag

export scenarios=(apple banana)
export x=5
export y=8
check-variables x y scenarios

x = "5"
y = "8"
scenarios is not set

I would like the output's last line to say:

scenarios = (apple banana)

Tim
  • 291
  • 2
  • 17
  • The question you linked already answers this. `declare -p "$which_variable" >/dev/null 2>&1` will return 0 if the value of `which_variable` names a previously declared variable, and 1 otherwise. If you're asking something else here (which seems to be the case), please edit your question accordingly. – oguz ismail Jan 22 '21 at 05:46
  • Oh, and you can't export arrays in bash. `scenarios` will not be visible to your script. – oguz ismail Jan 22 '21 at 05:49

0 Answers0