• shell 脚本控制命令的执行顺序,和脚本执行中断退出


    &&,||,(),{},& 五个符号的运用

    shell脚本执行命令的时候,有时候会依赖于前一个命令是否执行成功。而&&和||就是用来判断前一个命令执行效果的。

    也可以使用 $? 变量判断一个命令是否执行成功。根据返回的结果判断是否执行下面的命令。

    1  &&
       使用方法:cmd1 &&  cmd2
       这个方式简单明了,cmd1如果返回结果为真(即执行返回为0,成功执行)后,cmd2才被执行
       换句话说,如果cmd1执行成功&&那么执行cmd2
       这里有个命令
       [ -f /home/dellogs.sh ] && echo "清除日至脚本存在"
       总之,&&符号代表如果第一个命令执行成功才执行第二个命令。
    2  ||
       使用方法:cmd1 ||cmd令2
       ||命令,cmd1没有执行成功则执行cmd2
       如简单例子
       cp wopper.txt oop.txt || echo "cp命令执行没有成功"
       如果||左边的命令没有执行成功,则屏幕中除显示“cp命令执行没有成功”
       下面给出一个更为实用的例子,
       awk ‘{print$1,$5}’ acc.qrt >qtr.tmp || echo "sorry the payroll(薪水) extraction(抽取) did'not work" | mail root

    实现shell的三元操作符:

    cmd1 && cmd2 || cmd3

    如果cmd1执行成功,则执行cmd2,否则执行cmd3


    3 除了使用&&和||这两方法外,还可以用(),{}这两个符号把命令连接起来
      ()和{}存在的目的只是为了,能一个shell或子shell中执行一组命令
       使用方法(cmd1;cmd2;cmd3;...)和{cmd1;cmd2;cmd3;...}
       这种情况比较少遇到,一般要和&&,||两个命令一起使用。
       例如
       comet monthent || (echo “Hello,quess what! comet did not work”| mail root;exit)

     4、使用&可以将一个命令放在后台运行,从而使shell脚本能够继续往走执行;

    for ((i=0;i<10;i++));do
      sleep 5 &
    done
    
    echo "done"

    上面的脚本执行后会立即打印出"done",sleep命令被扔给后台执行,不会阻塞脚本执行。

    如果想要在进入下个循环前,必须等待上个后台命令执行完毕,可以使用wait命令:

    for ((i=0;i<10;i++));do
      sleep 5 &
      wait
    done
    
    echo "done"

    这样,需要等待50s后才能在屏幕上看到"done"。

    5,exit 命令退出shell,判断上一个命令是否执行成功,可用 echo $? ,为0,表示执行成功,不为0表示失败。

      失败时,可以使用exit命令退出整个shell脚本的进程。

    https://www.cnblogs.com/zhaolizhe/p/6923501.html

  • 相关阅读:
    HDU 4388 To the moon
    HDU 4757 Tree
    HDU 5816 Hearthstone
    hihocoder 1356 分隔相同整数
    HDU 5726 GCD
    POJ3026 Borg Maze(Prim)(BFS)
    POJ1258 Agri-Net(Prim)
    POJ1751 Highways(Prim)
    POJ2349 Arctic Network(Prim)
    POJ1789 Truck History(Prim)
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/15485587.html
Copyright © 2020-2023  润新知