Linux运维 命令执行顺序

Linux运维相关(五)

学习Linux运维过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。

—— 命令执行顺序 ——

1.使用"&&"

  1. 命令 1 && 命令 2

  2. &&左边的命令 1 返回真(即返回 0,成功被执行)后,&&右边的命令 2 才能够被执行

  3. 举例:

cp /apps/bin /apps/dev/bin && rm -r /apps/bin  // 如果复制操作完成,那么执行删除操作 

2.使用"||"

  1. 命令 1 || 命令 2

  2. 如果||左边的命令 1 未执行成功,那么就执行||右边的命令 2

  3. 举例:

cp file1 file2 || echo "if seeing this,cp failed."  // 如果复制失败,就打印信息

3.用"()“和”{}"将命令结合在一起

  1. ( 命令 1;命令 2;… ) : 当前 shell 中执行一组命令

  2. { 命令 1;命令 2;… } : 类上,相应的命令将在子 shell 而不是当前 shell 中作为一个整体被执行。只有 在"{ }"中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子 shell 中执行,否则仍然在当前 shell 执行。

  3. ()、{} 一般和&&或||一起使用,例如:
    cp file1 file2 || (echo "cp failed" | mail zqf; exit) // 当文件 file1 很大时,复制需要花费很多时间,如果复制过程中出错,将会发送一个邮件给用户,然后退出当前 shell

  4. 在编写 shell 脚本时,使用"&&“和”||",可根据前面命令的返回值来控制其后面命令的执行,对构造判断 语句非常有用。

——————————————————————————————————
【理解】 可以用编程语言的逻辑来理解Linux命令执行顺序,用C语言来举例。在C语言中的条件执行顺序和Linux命令执行顺序相同。比如:

if((a >5 && a < 10) || (a > 20 || a < 30))

程序在执行的时候会先执行“||”前面括号内的条件,即(a >5 && a < 10),括号内则会先执行“&&”前面的条件。所以执行顺序是:
命令执行顺序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章