【发布时间】:2010-06-05 20:02:10
【问题描述】:
我正在尝试检查环境变量的值,并根据该值做某些事情,只要设置了变量,它就可以正常工作。当它不是时,虽然我得到了一大堆错误(因为 BASH 试图将我指定的字符串与未定义的变量进行比较,我猜)
我尝试实施额外的检查以防止它发生,但没有运气。我正在使用的代码块是:
#!/bin/bash
if [ -n $TESTVAR ]
then
if [ $TESTVAR == "x" ]
then
echo "foo"
exit
elif [ $TESTVAR == "y" ]
then
echo "bar"
exit
else
echo "baz"
exit
fi
else
echo -e "TESTVAR not set\n"
fi
这是输出:
$ export TESTVAR=x
$ ./testenv.sh
foo
$ export TESTVAR=y
$ ./testenv.sh
bar
$ export TESTVAR=q
$ ./testenv.sh
baz
$ unset TESTVAR
$ ./testenv.sh
./testenv.sh: line 5: [: ==: unary operator expected
./testenv.sh: line 9: [: ==: unary operator expected
baz
我的问题是,'unset TESTVAR' 不应该取消它吗?好像不是这样的……
【问题讨论】: