2012-10-11 74 views
0

使用bash,你可以做一个简单的变量测试这样简单变量测试

$ [ $foo ]; echo $? 
1 

$ foo=bar 

$ [ $foo ]; echo $? 
0 

当且仅当该参数不为null表达式为true。

什么是与C类似的测试?

编辑

比方说一个int类型参数的缘故。

回答

1

一般来说,在C.隐含布尔转换所以以下所有的将打印“坏”:

int a = 0; 
if (a) {     // if a is nonzero. 
    printf("good"); 
} 
else { 
    printf("bad"); 
} 

char* str = NULL; 
if (str) {     // if str is nonzero. (NULL is zero). 
    printf("good"); 
} 
else { 
    printf("bad"); 
} 
+1

注意,空,分配的字符串被认为是真实的,并且对'strlen的另一张支票( )'(或'* str')将是必需的。 –

+0

非常好的一点。我绝对错过了与shell脚本相比这是一个自然扩展的情况。 –