#!/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
求助shell的两个判断解释
-
- 帖子: 3
- 注册时间: 2009-11-15 11:20
- pcbird
- 帖子: 2337
- 注册时间: 2008-12-19 13:44
- 来自: 东8区
Re: 求助shell的两个判断解释
0和1在if里面只是一个数字 if里面有东西的话,都为真
! 非的意思,就说if []就是这个效果了
! 非的意思,就说if []就是这个效果了
代码: 全选
\ ,__,
\ (oo)____
(__) )\
||--|| *
- xhy
- 帖子: 3916
- 注册时间: 2005-12-28 1:16
- 系统: Ubuntu 12.10 X64
- 来自: 火星
Re: 求助shell的两个判断解释
代码: 全选
a=0; if [ $a -eq 0 ]; then echo "TRUE"; else echo "FALSE"; fi
目前负债150多万
-
- 帖子: 3
- 注册时间: 2009-11-15 11:20
Re: 求助shell的两个判断解释
有点明白了,和大家分享
a=1 if [ $a ] 是这样解释的
[ $a ] = [ 1 ] = [ -n 1 ] = [ -n "1" ] -> strlen("1")>0 -> true
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
- 来自: 火星
- 小普林斯
- 帖子: 707
- 注册时间: 2009-04-14 13:18
Re: 求助shell的两个判断解释
SHELL的if语句里面只是看括号里面命令执行后的返回状态,并不是BOOL值判断~