Linux系統支援多條命令順序執行,就是我可以依次輸入多條命令後,統一按Enter鍵,順序執行。
1、多命令執行符;
在多個命令之間加;
即可多命令順序執行。
命令格式:命令1 ; 命令2
說明:
- 多個命令順序執行,命令之間可以沒有任何邏輯聯絡。
[root@localhost ~]# ls ; date ; cd /etc/ anaconda-ks.cfg install.log install.log.syslog 2020 03月 29日 星期日 05:08:28 CST [root@localhost etc]#
- 不管前面的命令是否正確執行,後面的命令都會執行。
[root@localhost ~]# lswrqwr ; date ; cd /etc/ -bash: lswrqwr: command not found 2020 03月 29日 星期日 05:08:28 CST [root@localhost etc]#
2、多命令執行符&&
&&
又叫邏輯與執行符。
命令格式:命令1 && 命令2
說明:
- 當命令1正確執行($?=0),則命令2才會執行。
- 當命令1執行不正確($?≠0),則命令2不會執行。
- 命令1和命令2之間可以沒有任何邏輯聯絡。
- 練習1:命令1正確執行。
[root@localhost ~]# ls && echo yes anaconda-ks.cfg install.log install.log.syslog yes
- 練習2:命令1不正確執行。
[root@localhost ~]# lsfgdf && echo yes -bash: lsfgdf: command not found
說明:
($?=0)
這裡先不說什麼意思,後邊預定義變數在講。
3、多命令執行符||
||
又叫邏輯或執行符。
命令格式:命令1 || 命令2
說明:
- 當命令1執行不正確($?≠0),則命令2才會執行。
- 當命令1正確執行($?=0),則命令2不會執行。
- 命令1和命令2之間可以沒有任何邏輯聯絡。
- 練習1:命令1正確執行。
[root@localhost ~]# ls && echo no anaconda-ks.cfg install.log install.log.syslog
- 練習2:命令1不正確執行。
[root@localhost ~]# lsfgdfgg && echo no -bash: lsfgdfgg: command not found no
4、&&
和||
聯合應用
&&
和||
兩個執行符可以聯合應用,來判斷命令是否正確執行。
執行語句:
[root@localhost ~]# ls && echo yes || echo no
如果ls
命令正確執行了,則echo yes
命令就會執行,會輸出一個yes
。echo no
命令判斷前邊echo yes
命令執行了,則echo no
命令則不會執行。
如果ls
命令報錯了,則echo yes
命令就不會被執行,echo no
命令需要判斷前邊的命令是否執行錯誤,因為echo yes
命令沒有執行,被跳過了,所以是判斷ls
命令是否報錯,而ls
命令報錯了,則執行echo no
命令,輸出no
。
換句話說,ls
位置的命令,如果正確執行,則輸出yes
,如果錯誤執行,則輸出no
。
(所以需要注意的是,需要判斷命令執行是否出錯,而不是命令是否執行。不執行的命令就被挖掉,不予判斷。)
練習:
[root@localhost ~]# ls && echo yes || echo no
anaconda-ks.cfg install.log install.log.syslog
yes
[root@localhost ~]# lsfgjhg && echo yes || echo no
-bash: lsfgjhg: command not found
no
提出一個問題:
我能不能把上邊命令中的
&&
和||
的位置互換?答案是不能。
直接看例子,自己推導:
[root@localhost ~]# ls || echo yes && echo no anaconda-ks.cfg install.log install.log.syslog no [root@localhost ~]# lsfgjhg || echo yes && echo no -bash: lsfgjhg: command not found yes no
結論:這是一個固定格式。