我想我不清楚如何做"和"测试.我想确保存在一个运行良好的参数,[ -e $VAR ]但结果是在空字符串上也评估为true; 这是我不想要的.
我怎么样和'他们在一起?还是有另一个一元测试来完成我想要的东西?
jay*_*ngh 517
if [ ! -z "$var" ] && [ -e "$var" ]; then
# something ...
fi
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 67
从bash联机帮助页:
[[ expression ]]- 根据条件表达式表达式的计算,返回0或1的状态.
而且,对于表达式,其中一个选项是:
expression1 && expression2-如果这两个expression1和expression2是真实的.
所以你可以将and它们放在一起如下(-n与之相反,-z我们可以摆脱它!):
if [[ -n "$var" && -e "$var" ]] ; then
echo "'$var' is non-empty and the file exists"
fi
Run Code Online (Sandbox Code Playgroud)
但是,我不认为在这种情况下需要它,-e xyzzy如果xyzzy 文件存在并且可以很容易地处理空字符串,则为真.如果那就是你想要的那么你实际上并不需要-z非空检查:
pax> VAR=xyzzy
pax> if [[ -e $VAR ]] ; then echo yes ; fi
pax> VAR=/tmp
pax> if [[ -e $VAR ]] ; then echo yes ; fi
yes
Run Code Online (Sandbox Code Playgroud)
换句话说,只需使用:
if [[ -e "$var" ]] ; then
echo "'$var' exists"
fi
Run Code Online (Sandbox Code Playgroud)
if [ -n "$var" -a -e "$var" ]; then
do something ...
fi
Run Code Online (Sandbox Code Playgroud)