我已经看到了很多"如何测试环境变量是否存在"。而且,看起来最好的答案就像[ -z ${var+x} ]
这一切都很棒,但是如果我在for循环中有一个可能的环境变量列表会怎么样:
MY_LIST="a b c d e f g"
我想知道是否存在$a
,$b
,$c
等?如果他们在传入的环境中设置了。
试过:
for i in $MY_LIST; do
if [ -z ${$i+x} ]; then
echo "doesn't exist"
else
echo "does exist"
fi
done
无济于事。诀窍是什么?注意我在嘘壳中。
答案 0 :(得分:2)
当变量的名称在另一个变量中时,您需要使用间接扩展。您可以通过将!
放在变量名的开头来执行此操作。
for i in $MY_LIST; do
if [ -z ${!i+x} ]; then
echo "doesn't exist"
else
echo "does exist"
fi
done