zoukankan      html  css  js  c++  java
  • 【转】Linux shell的&&和||

    原文网址:http://www.2cto.com/os/201302/189655.html

    Linux shell的&&和||
     
    shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时,表示执行失败。 
      www.2cto.com  
    有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。 
     
    &&(命令执行控制) 
     
    语法格式如下: 
     
        command1 && command2 [&& command3 ...] 
     
    1 命令之间使用 && 连接,实现逻辑与的功能。 
    2 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。 
    3 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。 
      www.2cto.com  
    示例 1 
    malihou@ubuntu:~$ cp ~/Desktop/1.txt ~/1.txt && rm ~/Desktop/1.txt && echo "success" 
     
    示例 1 中的命令首先从 ~/Desktop 目录复制 1.txt 文件到 ~ 目录;执行成功后,使用 rm 删除源文件;如果删除成功则输出提示信息。 
     
    ||(命令执行控制) 
     
    语法格式如下: 
     
        command1 || command2 [|| command3 ...] 
     
    1 命令之间使用 || 连接,实现逻辑或的功能。 
    2 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。 
    3 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。 
     
    示例 2 
    malihou@ubuntu:~$ rm ~/Desktop/1.txt || echo "fail" 
     
    在示例 2 中,如果 ~/Desktop 目录下不存在文件 1.txt,将输出提示信息。 
     
    示例 3 
    malihou@ubuntu:~$ rm ~/Desktop/1.txt && echo "success" || echo "fail" 
     
    在示例 3 中,如果 ~/Desktop 目录下存在文件 1.txt,将输出 success 提示信息;否则输出 fail 提示信息。 
     
    shell 提供了两种方法(() 和 {})实现将几个命令合作一起执行,代替独立执行。这种方式并不能控制命令是否需要执行,仅是将多个单独的命令组合在一起执行,最终命令的返回值将由最后一条命令的返回值来决定。 
     
    () (命令组合) 
     
    语法格式如下:   www.2cto.com  
     
        (command1;command2[;command3...]) 
     
    1 一条命令需要独占一个物理行,如果需要将多条命令放在同一行,命令之间使用命令分隔符(;)分隔。执行的效果等同于多个独立的命令单独执行的效果。 
    2 () 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。 
    3 命令组合常和命令执行控制结合起来使用。 
     
    示例 4 
    malihou@ubuntu:~$ rm ~/Desktop/1.txt || (cd ~/Desktop/;ls -a;echo "fail") 
     
    在示例 4 中,如果目录 ~/Desktop 下不存在文件 1.txt,则执行命令组合。
     
  • 相关阅读:
    升级windows 11小工具
    windows 10更新升级方法
    您需要了解的有关 Oracle 数据库修补的所有信息
    Step by Step Apply Rolling PSU Patch In Oracle Database 12c RAC Environment
    Upgrade Oracle Database Manually from 12.2.0.1 to 19c
    如何应用版本更新 12.2.0.1.210420(补丁 32507738 – 2021 年 4 月 RU)
    xtrabackup 安装、备份和恢复
    Centos_Lvm expand capacity without restarting CentOS
    Centos_Lvm_Create pv vg lv and mount
    通过全备+relaylog同步恢复被drop的库或表
  • 原文地址:https://www.cnblogs.com/wi100sh/p/4196216.html
Copyright © 2011-2022 走看看