我想比较两个变量以检查此比较作为变量是否为空。 我知道这很令人困惑,但我不知道如何更好地解释它。这是一个小示例代码:
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 是否为空。
最佳答案
您正在检查字符串 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
关于linux - 通过比较 shell 脚本中的两个字符串来请求变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575652/