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)
question from:
https://stackoverflow.com/questions/65838769/in-bash-how-can-i-test-if-the-array-is-declared-if-i-only-have-its-name 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…