我想检查一个环境变量的值,并根据值做某些事情,只要变量设置它工作正常。当它不是我虽然得到一大堆错误(因为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
我的问题是,不应该“取消设置的testvar”废掉了吗?它似乎并非如此...
是啊,这固定它。感谢您的建议。 – Hamza 2010-06-05 20:09:54
没有必要将字符串文字(foo)放在引号中。 – camh 2010-06-05 23:32:04
@camh没有,除了良好的做法,清晰度,以及真正的文字可能包含空格的事实。 – 2010-06-06 08:49:04