jeudi 21 janvier 2021

In Bash how can I test if the array is declared if I only have its name

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)

Aucun commentaire:

Enregistrer un commentaire