KornShell布尔条件逻辑

我对这个我写的KornShell(ksh)脚本有点困惑,主要是布尔和条件。

所以我的脚本的第一部分我有catmewcme都设置为truefalse 。 这部分工作正常,因为我试图echo他们,他们产生了预期的结果。 后来,我有这样的代码:

if [[ $catme ]] ; then
    some commands
fi

我用wcme重复wcme 。 然而,意外的是,无论wcmecatme是什么,我的if语句中的命令都会被执行。

这是一个语法错误? 我试过[[ $catme -eq true ]]但这似乎也不起作用。 有人能指出我正确的方向吗?


test[是同样的事情。 你需要摆脱if语句中的test命令,所以它看起来像这样:

if $catme; then
    some commands
fi

键入man test以获取更多信息。

例如:

$ v=true  
$ $v
$ if $v; then
>   echo "PRINTED"
> fi
PRINTED

$ v=false
$ if $v; then
>   echo "PRINTED"
> fi
$ 

您也可以尝试尝试和错误的方法:

if [[ true ]]; then echo +true; else echo -false; fi
+true
if [[ false ]]; then echo +true; else echo -false; fi
+true
if [[ 0 ]]; then echo +true; else echo -false; fi
+true
if [[ -1 ]]; then echo +true; else echo -false; fi
+true
if (( -1 )); then echo +true; else echo -false; fi
+true
if (( 0 )); then echo +true; else echo -false; fi
-false
if (( 1 )); then echo +true; else echo -false; fi
+true
if [[ true == false ]]; then echo +true; else echo -false; fi
-false
if [[ true == true ]]; then echo +true; else echo -false; fi
+true
if true; then echo +true; else echo -false; fi
+true
if false; then echo +true; else echo -false; fi
-false

试试[[ $catme == true ]]

或者更好的是,gahooa的答案相当不错。

链接地址: http://www.djcxy.com/p/17515.html

上一篇: KornShell Boolean Conditional Logic

下一篇: How do I put an already