求助shell的两个判断解释

sh/bash/dash/ksh/zsh等Shell脚本
回复
hongkongtravel
帖子: 3
注册时间: 2009-11-15 11:20

求助shell的两个判断解释

#1

帖子 hongkongtravel » 2009-12-16 14:35

#!/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
头像
pcbird
帖子: 2337
注册时间: 2008-12-19 13:44
来自: 东8区

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

#2

帖子 pcbird » 2009-12-16 14:56

0和1在if里面只是一个数字 if里面有东西的话,都为真

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

代码: 全选

 
       \   ,__,
        \  (oo)____
           (__)    )\
              ||--|| *  
 
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

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

#3

帖子 xhy » 2009-12-16 15:05

代码: 全选

a=0; if [ $a -eq 0 ]; then echo "TRUE"; else echo "FALSE"; fi
要这么写才对
目前负债150多万
hongkongtravel
帖子: 3
注册时间: 2009-11-15 11:20

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

#4

帖子 hongkongtravel » 2009-12-16 15:05

有点明白了,和大家分享
a=1 if [ $a ] 是这样解释的
[ $a ] = [ 1 ] = [ -n 1 ] = [ -n "1" ] -> strlen("1")>0 -> true
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

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

#5

帖子 xhy » 2009-12-16 15:12

SHELL不是C语言,
if (a) 和 if(a!=0) 在C语言里一样,但是shell里含义不同
目前负债150多万
头像
小普林斯
帖子: 707
注册时间: 2009-04-14 13:18

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

#6

帖子 小普林斯 » 2009-12-16 15:58

SHELL的if语句里面只是看括号里面命令执行后的返回状态,并不是BOOL值判断~
回复