今天给各位分享如何对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 中的运算符。例如:
[ 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”。如果将方括号更改为双括号(( )),您将得到预期的结果。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/112787.html
用户评论
孤城暮雨
这篇文章简直太棒了!我一直以来都对if语句里的表达分组感到困惑,这本书说得清清楚楚,而且还用例子来解释,一下子就明白了。
有6位网友表示赞同!
男神大妈
这种分组方法好有用啊,以后可以不用担心大括号嵌套混乱问题了!学习到了!
有8位网友表示赞同!
嗯咯
说实话,我觉得这篇文章没有必要写得那么复杂,直接说可以用括号进行分组就好了。
有14位网友表示赞同!
傲世九天
同意楼上说法,分组真的就两三个关键词就能说明清楚,用这么多例子是不是太啰嗦了?
有15位网友表示赞同!
有些人,只适合好奇~
我一直觉得这种代码风格比较容易理解,而且分组可以很清晰地显示逻辑关系,值得学习!
有9位网友表示赞同!
青衫负雪
讲真,我用的编程语言没有这么严格的分组语法,但我还是觉得这篇文章介绍的思路很有用。
有12位网友表示赞同!
黑夜漫长
这篇文章对我来说太有帮助了,我经常在if语句中犯错误,现在终于明白了应该如何分组逻辑关系!
有15位网友表示赞同!
此刻不是了i
我用Python语言编程,它并没有严格要求分组语法,但是使用括号分组确实可以增强代码可读性,值得借鉴!
有9位网友表示赞同!
。婞褔vīp
这篇文章写的太好了,终于明白为什么有些高手喜欢用分组来写if语句了!
有19位网友表示赞同!
搞搞嗎妹妹
我总觉得在 if 语句中使用分组虽然能提高代码可读性,但有时候会增加代码长度,需要权衡一下
有10位网友表示赞同!
微信名字
对于一些简单的条件判断,我觉得分组反而显得多余了,直接写出来就足够清楚了
有18位网友表示赞同!
麝香味
分组语句的确有用,但我感觉有些文章的例子太复杂了,实际应用中很少用到这么复杂的逻辑关系吧?
有16位网友表示赞同!
高冷低能儿
我更喜欢用条件链的方式来表达代码逻辑,因为我觉得比使用括号分组看起来要简洁一些
有13位网友表示赞同!