分页: 1 / 1

求助shell的两个判断解释

发表于 : 2009-12-16 14:35
hongkongtravel
#!/bin/sh
a=0; if [ $a ]; then echo "TRUE"; else echo "FALSE"; fi
a=1; if [ $a ]; then echo "TRUE"; else echo "FALSE"; fi
上面这个为什么永远都是真


a=0; if [ ! $a ]; then echo "TRUE"; else echo "FALSE"; fi
a=1; if [ ! $a ]; then echo "TRUE"; else echo "FALSE"; fi
这个为什么又永远是假


thanks in advance

Re: 求助shell的两个判断解释

发表于 : 2009-12-16 14:56
pcbird
0和1在if里面只是一个数字 if里面有东西的话,都为真

! 非的意思,就说if []就是这个效果了

Re: 求助shell的两个判断解释

发表于 : 2009-12-16 15:05
xhy

代码: 全选

a=0; if [ $a -eq 0 ]; then echo "TRUE"; else echo "FALSE"; fi
要这么写才对

Re: 求助shell的两个判断解释

发表于 : 2009-12-16 15:05
hongkongtravel
有点明白了,和大家分享
a=1 if [ $a ] 是这样解释的
[ $a ] = [ 1 ] = [ -n 1 ] = [ -n "1" ] -> strlen("1")>0 -> true

Re: 求助shell的两个判断解释

发表于 : 2009-12-16 15:12
xhy
SHELL不是C语言,
if (a) 和 if(a!=0) 在C语言里一样,但是shell里含义不同

Re: 求助shell的两个判断解释

发表于 : 2009-12-16 15:58
小普林斯
SHELL的if语句里面只是看括号里面命令执行后的返回状态,并不是BOOL值判断~