最佳答案
我试图检查一个环境变量的值,根据这个值做一些特定的事情,只要设置了变量,就可以正常工作。如果不是这样,我会得到一大堆错误(我猜是因为 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”不应该使它无效吗? 似乎不是这样的..。