Linux?Shell腳本多命令執(zhí)行邏輯的示例詳解
簡(jiǎn)介
Linux 中可以使用分號(hào)";“、雙and號(hào)”&&“和雙豎線(xiàn)”||"來(lái)連接多個(gè)命令。根據(jù)場(chǎng)景的不同適當(dāng)?shù)氖褂煤线m的符號(hào)。
歷史攻略
命令連接符解析:
僅連接,表示運(yùn)行先后,無(wú)邏輯關(guān)系:分號(hào)";",如command1 ; command2
邏輯與關(guān)系:&&,如command1 && command2
邏輯或關(guān)系:&&,如command1 && command2
一、分號(hào)
命令之間沒(méi)有邏輯關(guān)系。分號(hào)連接的命令會(huì)按照順序從前向后依次執(zhí)行,但分號(hào)兩端的命令之間沒(méi)有任何邏輯關(guān)系,所有寫(xiě)出來(lái)的命令最終都會(huì)被執(zhí)行,即使分號(hào)前面的命令出錯(cuò)也不影響后面的命令。
二、&&
邏輯與。&&連接的命令會(huì)按照順序從前向后執(zhí)行,但只有當(dāng)command1正確執(zhí)行才執(zhí)行command2,如果command1不正確執(zhí)行,則不執(zhí)行command2。在bash中,通過(guò)預(yù)定義變量“? ”來(lái)判斷命令是否正確執(zhí)行,如果 " ?”來(lái)判斷命令是否正確執(zhí)行,如果"?”來(lái)判斷命令是否正確執(zhí)行,如果"?"的值為0則表示前一條命令正確執(zhí)行,其他任意值都表示不正確執(zhí)行。
三、||
邏輯或。||連接的命令會(huì)按照順序從前向后執(zhí)行,但只有當(dāng)command1不正確執(zhí)行才執(zhí)行command2,command1正確執(zhí)行則不會(huì)執(zhí)行command2。||和&&都是短路符號(hào),符號(hào)左右的命令之間具有邏輯關(guān)系。
案例剖析
# -*- coding: utf-8 -*- # time: 2022/10/4 21:47 # file: cmd_1_success.py # 公眾號(hào): 玩轉(zhuǎn)測(cè)試開(kāi)發(fā) def run_success_1(): print("cmd_1 start run") print("cmd_1 do something") print("cmd_1 end") if __name__ == '__main__': run_success_1()
cmd1_fail = python cmd_1_fail.py
# -*- coding: utf-8 -*- # time: 2022/10/4 21:47 # file: cmd_1_fail.py # 公眾號(hào): 玩轉(zhuǎn)測(cè)試開(kāi)發(fā) def run_fail_1(): print("cmd_1 start run") raise BaseException print("cmd_1 end") if __name__ == '__main__': run_fail_1()
cmd2_success = python cmd_2_success.py
# -*- coding: utf-8 -*- # time: 2022/10/4 21:49 # file: cmd_2_success.py def run_success_2(): print("cmd_2 start run") print("cmd_2 do something") print("cmd_2 end") if __name__ == '__main__': run_success_2()
cmd2_fail = python cmd_2_fail.py
# -*- coding: utf-8 -*- # time: 2022/10/4 21:51 # file: cmd_2_fail.py # 公眾號(hào): 玩轉(zhuǎn)測(cè)試開(kāi)發(fā) def run_fail_2(): print("cmd_2 start run") raise BaseException print("cmd_2 end") if __name__ == '__main__': run_fail_2()
即:存在4種基本情況
cmd_1_success、cmd_2_success
cmd_1_fail、cmd_2_success
cmd_1_success、cmd_2_fail
cmd_1_fail、cmd_2_fail
test.sh
#bin/bash python cmd_1_success; python cmd_2_success python cmd_1_success && python cmd_2_success python cmd_1_success || python cmd_2_success
演示分號(hào)的四類(lèi)基礎(chǔ)情況:
# 第一種情況:cmd_1_success; cmd_2_success cmd_1 start run cmd_1 do something cmd_1 end cmd_2 start run cmd_2 do something cmd_2 end # 第二種情況:cmd_1_fail; cmd_2_success cmd_1 start run Traceback (most recent call last): File "cmd_1_fail.py", line 14, in <module> run_fail_1() File "cmd_1_fail.py", line 9, in run_fail_1 raise BaseException BaseException cmd_2 start run cmd_2 do something cmd_2 end # 第三種情況:cmd_1_success; cmd_2_fail cmd_1 start run cmd_1 do something cmd_1 end cmd_2 start run Traceback (most recent call last): File "cmd_2_fail.py", line 14, in <module> run_fail_2() File "cmd_2_fail.py", line 9, in run_fail_2 raise BaseException BaseException # 第四種情況:cmd_1_fail; cmd_2_fail cmd_1 start run Traceback (most recent call last): File "cmd_1_fail.py", line 14, in <module> run_fail_1() File "cmd_1_fail.py", line 9, in run_fail_1 raise BaseException BaseException cmd_2 start run Traceback (most recent call last): File "cmd_2_fail.py", line 14, in <module> run_fail_2() File "cmd_2_fail.py", line 9, in run_fail_2 raise BaseException BaseException
演示 && 的四類(lèi)基本情況:
# 第一種情況:cmd_1_success && cmd_2_success cmd_1 start run cmd_1 do something cmd_1 end cmd_2 start run cmd_2 do something cmd_2 end # 第二種情況:cmd_1_fail && cmd_2_success cmd_1 start run Traceback (most recent call last): File "cmd_1_fail.py", line 14, in <module> run_fail_1() File "cmd_1_fail.py", line 9, in run_fail_1 raise BaseException BaseException # 第三種情況:cmd_1_success && cmd_2_fail cmd_1 start run cmd_1 do something cmd_1 end cmd_2 start run Traceback (most recent call last): File "cmd_2_fail.py", line 14, in <module> run_fail_2() File "cmd_2_fail.py", line 9, in run_fail_2 raise BaseException BaseException # 第四種情況:cmd_1_fail && cmd_2_fail cmd_1 start run Traceback (most recent call last): File "cmd_1_fail.py", line 14, in <module> run_fail_1() File "cmd_1_fail.py", line 9, in run_fail_1 raise BaseException BaseException
演示 || 的四類(lèi)基本情況:
# 第一種情況:cmd_1_success || cmd_2_success cmd_1 start run cmd_1 do something cmd_1 end # 第二種情況:cmd_1_fail || cmd_2_success cmd_1 start run Traceback (most recent call last): File "cmd_1_fail.py", line 14, in <module> run_fail_1() File "cmd_1_fail.py", line 9, in run_fail_1 raise BaseException BaseException cmd_2 start run cmd_2 do something cmd_2 end # 第三種情況:cmd_1_success || cmd_2_fail cmd_1 start run cmd_1 do something cmd_1 end # 第四種情況:cmd_1_fail || cmd_2_fail cmd_1 start run Traceback (most recent call last): File "cmd_1_fail.py", line 14, in <module> run_fail_1() File "cmd_1_fail.py", line 9, in run_fail_1 raise BaseException BaseException cmd_2 start run Traceback (most recent call last): File "cmd_2_fail.py", line 14, in <module> run_fail_2() File "cmd_2_fail.py", line 9, in run_fail_2 raise BaseException BaseException
即:分號(hào)前后運(yùn)行無(wú)邏輯關(guān)系;&&后面的命令需要前面的命令正常執(zhí)行;
||后面的命令需要前面的命令運(yùn)行失敗才執(zhí)行。
到此這篇關(guān)于Linux Shell腳本多命令執(zhí)行邏輯的示例詳解的文章就介紹到這了,更多相關(guān)Shell腳本多命令執(zhí)行邏輯內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
bash shell獲取當(dāng)前腳本的絕對(duì)路徑(pwd/readlink)
有時(shí)候,我們需要知道當(dāng)前執(zhí)行的輸出shell腳本的所在絕對(duì)路徑,本文主要介紹了bash shell獲取當(dāng)前腳本的絕對(duì)路徑,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02shell參數(shù)換行與shell輸出換行的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于shell參數(shù)換行與shell輸出換行的方法實(shí)例,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02shell實(shí)現(xiàn)Fisher–Yates shuffle洗牌算法介紹
大家好,本篇文章主要講的是shell實(shí)現(xiàn)Fisher–Yates shuffle洗牌算法介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下哦2021-11-11Linux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法
下面小編就為大家?guī)?lái)一篇Linux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03bash腳本如何監(jiān)控cup/內(nèi)存/磁盤(pán)使用率
本文主要介紹了bash腳本如何監(jiān)控cup/內(nèi)存/磁盤(pán)使用率,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10