連接 ;
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與左邊邏輯無關,繼續執行。