【Shell笔记>操作符】不用if也能进行条件判断?

今天看到Shell中与操作符&&与或操作符||的含义时发现它们跟我在其他一些语言(比如R和Python)中有点不太一样:

  • 逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令
  • 逻辑“或”,它在 Linux 系统中的运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令

认真注意下,虽然一般看来使用结果和两者为真皆为真的与操作,以及两者任意为真则为真的或操作效果一致,但Shell中这两者二元操作符只有左侧为真或为假时才执行后面的命令,这实际上提供了一种条件判断的实现。

看命令代码:

[root@linuxprobe Desktop]# [ 10 -gt 10 ] && echo "yes" || echo "no"
no
[root@linuxprobe Desktop]# [ 10 -eq 10 ] && echo "yes" || echo "no"
yes

第1条语句可以视为以下if语句的精简版

[root@linuxprobe Desktop]# if [ 10 -gt 10 ]; then
> echo "yes"
> else
> echo "no"
> fi
no

有意思吧?!&&接条件为真时的操作,而||接为假时的操作。

不过值得注意的是不能执行多条命令,而且&&||不能反过来:

[root@linuxprobe Desktop]# [ 10 -gt 10 ] || echo "no" && echo "yes"
no
yes

根据我在文章一开始提到两个运算符的含义,想想是为什么呢?欢迎在下方留言讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容