测试列表中是否存在环境变量(hush shell)

时间:2015-02-09 22:06:16

标签: shell unix

我已经看到了很多"如何测试环境变量是否存在"。而且,看起来最好的答案就像[ -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  

无济于事。诀窍是什么?注意我在嘘壳中。

1 个答案:

答案 0 :(得分:2)

当变量的名称在另一个变量中时,您需要使用间接扩展。您可以通过将!放在变量名的开头来执行此操作。

for i in $MY_LIST; do  
   if [ -z ${!i+x} ]; then  
      echo "doesn't exist"  
   else  
      echo "does exist"  
   fi  
done