Linux shell腳本中多命令的 ; && || 連接符號用法


連接 ;

command1;command2;command3;...
僅作為分割命令用法,前面命令執行的成功與否,不影響后續命令執行。

與 &&

command1 && command2 && command3 && ...
與,串接后從左到右執行,左邊的命令執行成功后,才會繼續執行右邊的命令。

或 ||

command1 || command2 || command3 || ...
或,串接后從左到右執行,左邊的命令執行失敗后,才會繼續執行右邊的命令。

換行 \

command2 && \
command3 && ...

太長了,寫不下,可以換行繼續。

舉例

mypc@mypc-u2004:~/workspace/c$ ls

這是一個空的文件夾。

mypc@mypc-u2004:~/workspace/c$ cat a;cat b;cat c;
cat: a: No such file or directory
cat: b: No such file or directory
cat: c: No such file or directory

從左到右執行,沒有任何關聯,所以會進行三次cat動作,都顯示沒有找到。

mypc@mypc-u2004:~/workspace/c$ cat a&&cat b; cat c;
cat: a: No such file or directory
cat: c: No such file or directory

從左到右執行,因為a命令執行失敗,所以不執行b命令,接着執行cat c。

mypc@mypc-u2004:~/workspace/c$ cat a&&cat b&&cat c;
cat: a: No such file or directory

對比,這次只執行了cat a。

mypc@mypc-u2004:~/workspace/c$ cat a||cat b&&cat c;
cat: a: No such file or directory
cat: b: No such file or directory
mypc@mypc-u2004:~/workspace/c$ cat a||cat b;cat c;
cat: a: No such file or directory
cat: b: No such file or directory
cat: c: No such file or directory

或,執行失敗后才會執行后續語句,所以cat a失敗,執行cat b失敗,&&后的cat c不執行,但;后的cat c執行。

mypc@mypc-u2004:~/workspace/c$ touch a
mypc@mypc-u2004:~/workspace/c$ cat a||cat b&&cat c;
cat: c: No such file or directory
mypc@mypc-u2004:~/workspace/c$ cat a||cat b;cat c;
cat: c: No such file or directory

創建一個a文件,
或,執行失敗后才會執行后續語句,所以cat a成功,不執行cat b,同時左邊執行成功,故&&后的cat c執行,;后的cat c與左邊邏輯無關,繼續執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM