『忘了再學』Shell基礎 — 7、Bash基本功能(多命令順序執行)
- 2022 年 3 月 31 日
- 筆記
- 高級測試技能 - Shell基礎
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結論:這是一個固定格式。


