如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?

在可移植的(POSIX或Bourne)shell中,可以使用多个test(或[)命令来实现表达式的分组:# Bourne shellif commandA &a

今天给各位分享如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

# Bourne shellif commandA commandB ||命令C; then.# 或者使用test(1) 命令: if [ testA ] [ testB ] || [测试C];然后.在上面的代码中,和|| shell 命令运算符具有相同的优先级,因此从左到右进行计算。

如果需要显式指定分组,可以使用花括号:

# Bourne shellif commandA { commandB ||命令C; };那么.不建议使用test命令的-a或-o选项,因为结果不确定。

对于Bash、zsh 和KornShell 等shell,存在更强大的比较命令并使用更简单的语法:

ArithmeticExpression 用于数字比较,NewTestCommand 用于字符串(和文件)比较。以下是示例:

# Bash/ksh/zshif (( (n0 n10) || n==-1 ));然后echo ‘0 $n 10, or n==-1’fior

# Bash/ksh/zshif [[ ( -f $localconfig -f $globalconfig ) || -n $noconfig ]]; then echo ‘configuration ok (or notused)’fi 需要注意的是,在((. )) 和[[.]] 中,运算符的优先级高于||运算符(类似于[的-a优先级比-o高),与and || 相反shell 中的运算符。例如:

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?

[ a=a ] || [ b=c ] [ c=d ] 将返回false,因为它相当于:

{ [ a=a ] || [ b=c ]; [ c=d ] 表达式从左到右计算,没有明确的优先级。以及下面的表达式:

[[ a=a || b=c c=d ]] 将返回true,因为它相当于:

[[ a=a || ( b=c c=d ) ]] 其中, 的优先级高于||。

需要注意的是,数字比较和字符串比较之间有严格的区别。考虑以下示例:

n=3if [[ $n 0 $n 10 ]];then echo ‘$n is Between 0 and 10’else echo ‘ERROR: invalid number: $n’fi 输出将为’ERROR:’ 因为在字符串中在比较中,“3”大于“10”,因为“3”位于“1”之后,并且不考虑下一个字符“0”。如果将方括号更改为双括号(( )),您将得到预期的结果。

用户评论

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
孤城暮雨

这篇文章简直太棒了!我一直以来都对if语句里的表达分组感到困惑,这本书说得清清楚楚,而且还用例子来解释,一下子就明白了。

    有6位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
男神大妈

这种分组方法好有用啊,以后可以不用担心大括号嵌套混乱问题了!学习到了!

    有8位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
嗯咯

说实话,我觉得这篇文章没有必要写得那么复杂,直接说可以用括号进行分组就好了。

    有14位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
傲世九天

同意楼上说法,分组真的就两三个关键词就能说明清楚,用这么多例子是不是太啰嗦了?

    有15位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
有些人,只适合好奇~

我一直觉得这种代码风格比较容易理解,而且分组可以很清晰地显示逻辑关系,值得学习!

    有9位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
青衫负雪

讲真,我用的编程语言没有这么严格的分组语法,但我还是觉得这篇文章介绍的思路很有用。

    有12位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
黑夜漫长

这篇文章对我来说太有帮助了,我经常在if语句中犯错误,现在终于明白了应该如何分组逻辑关系!

    有15位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
此刻不是了i

我用Python语言编程,它并没有严格要求分组语法,但是使用括号分组确实可以增强代码可读性,值得借鉴!

    有9位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
。婞褔vīp

这篇文章写的太好了,终于明白为什么有些高手喜欢用分组来写if语句了!

    有19位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
搞搞嗎妹妹

我总觉得在 if 语句中使用分组虽然能提高代码可读性,但有时候会增加代码长度,需要权衡一下

    有10位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
微信名字

对于一些简单的条件判断,我觉得分组反而显得多余了,直接写出来就足够清楚了

    有18位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
麝香味

分组语句的确有用,但我感觉有些文章的例子太复杂了,实际应用中很少用到这么复杂的逻辑关系吧?

    有16位网友表示赞同!

如何对if 语句中的表达式进行分组,例如if (A AND B) OR C?
高冷低能儿

我更喜欢用条件链的方式来表达代码逻辑,因为我觉得比使用括号分组看起来要简洁一些

    有13位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/112787.html

(0)
小su's avatar小su
上一篇 2024年8月31日 下午11:06
下一篇 2024年8月31日 下午11:08

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注