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),括號內則會先執行“&&”前面的條件。所以執行順序是:
命令執行順序

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