一、引言

Shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时,表示执行失败。有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。

二、语法&详细

  1. &&  前面的命令执行成功后才会执行后面的命令;如果前面的命令执行失败,则后面的命令就不执行

    command1 && command2 [&& command3 ...] 
    1. 命令之间使用 && 连接,实现逻辑与的功能
    2. 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
    3. 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
  2. ||  只有前面的命令执行失败后才会执行后面的命令;如果前面的命令执行成功,则后面的命令就不执行
    command1 || command2 [|| command3 ...] 
    1. 命令之间使用 || 连接,实现逻辑或的功能。
    2. 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。
    3. 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。

三、示例

  1. 如果 ~/Desktop 目录下存在文件 1.txt,将输出 success 提示信息;否则输出 fail 提示信息。

    user@ae01:~$ rm ~/Desktop/.txt && echo "success" || echo "fail" 
  2. 如果目录 ~/Desktop 下不存在文件 1.txt,则执行命令组合。
    user@ae01:~$ rm ~/Desktop/.txt || (cd ~/Desktop/;ls -a;echo "fail") 

本文摘取总结至Linux shell的&&和||

最新文章

  1. [笔记]ng2的webpack配置
  2. final发布评价
  3. java jps 命令详解
  4. WPF自定义控件与样式(6)-ScrollViewer与ListBox自定义样式
  5. Hadoop 2.6 MapReduce运行原理详解
  6. Linux下配置ip地址四种方法
  7. iOS 获得指定文件夹下的指定格式文件
  8. [openMP] OpenMP在visual studio和mac上的配置
  9. 枚举子集的3种方式 -- C++描述
  10. go mode
  11. Linux下安装与配置Nginx
  12. JWT实战:使用axios+PHP实现登录认证
  13. springboot restful接口服务异常处理
  14. vue路由异步组件案例
  15. jquery 和 FormData 最简单图片异步上传
  16. C++ 数据的封装 初始封装
  17. Richview 首页 奇偶页 不同页眉页脚
  18. ASP.NET存储Session的StateServer
  19. HDU 1254 推箱子(BFS加优先队列)
  20. docker与虚拟机性能比较(转)

热门文章

  1. J2EE学习路线图
  2. Web jquery表格组件 JQGrid 的使用 - 11.问题研究
  3. Base64原理
  4. boost之lexical_cast
  5. python gutter area / 设置断点、行号右边代码左边的空白栏
  6. .htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符
  7. 安卓TabHost页面
  8. C和指针 第三章 链接属性 extern、internal、none
  9. SVN版本库(访问权限)配置实例笔记
  10. 音频指纹(Philips)