我想比较两个变量来检查这个变量是否为空。 我知道它很混乱,但我不知道如何更好地解释它。这里有一个小例子代码:
declare -a List=("human" "animal")
sqlhuman="SELECT * FROM example;"
for i in "${List[@]}"
do
if[ -n "sql$i"];then
#execute sql
else
#do nothing
fi
done
在这种情况下,脚本检查“sqlhuman”和“sqlanimal”是否为空。当然他们不是空的。两者都有超过1个字母。我希望它们作为变量的指针并检查它们是否为空。
所以我需要的是动态构建变量目录。例如,在第一个迭代器上,他应检查$ sqlhuman是否为空。
答案 0 :(得分:2)
您正在检查字符串 sqlhuman
是否为空,而不是名为sqlhuman
的变量的内容。使用间接参数扩展:
var="sql$i"
if [ -n "${!var}" ]; then
那就是说,一个功能将是一个更清洁的方法。
do_sql () {
case $1 in
human) echo "running sql for human" ;;
animal) echo "running sql for animal" ;;
*) echo "doing nothing" ;;
esac
}
for i in "${List[@]}"; do
do_sql "$i"
done