linux中的分號,&&和&,|和||說明與用法

本文參考的文章

在用linux命令時候,我們可以一行執行多條命令或者有條件的執行下一條命令,下面我們講解一下linux命令分號&&和&,|和||的用法

1.1. “;”分號用法

方式:command1 ; command2

用法說明:用;號隔開每個命令,每個命令按照從左到右的順序,順序執行,彼此之間不關心是否失敗, 所有命令都會執行。

1.2. “|”管道符用法

方式:command1 | command2

用法說明:上一條命令的輸出,作爲下一條命令參數。Linux所提供的管道符“|”將兩個命令隔開,管道符左邊命令的輸出就會作爲管道符右邊命令的輸入。連續使用管道意味着第一個命令的輸出會作爲 第二個命令的輸入,第二個命令的輸出又會作爲第三個命令的輸入,依此類推

實例:

  • 利用一個管道
# rpm -qa|grep licq

這條命令使用一個管道符“|”建立了一個管道。管道將rpm -qa命令的輸出(包括系統中所有安裝的RPM包)作爲grep命令的輸入,從而列出帶有licq字符的RPM包來。

  • 利用多個管道
# cat /etc/passwd | grep /bin/bash | wc -l

這條命令使用了兩個管道,利用第一個管道將cat命令(顯示passwd文件的內容)的輸出送給grep命令,grep命令找出含有“/bin /bash”的所有行;第二個管道將grep的輸出送給wc命令,wc命令統計出輸入中的行數。這個命令的功能在於找出系統中有多少個用戶使用bash

1.3. “&”符號用法

方式:command1 &

用法說明:&放在啓動參數後面表示設置此進程爲後臺進程。默認情況下,進程是前臺進程,這時就把Shell給佔據了,我們無法進行其他操作,對於那些沒有交互的進程,很多時候,我們希望將其在後臺啓動,可以在啓動參數的時候加一個’&'實現這個目的。

1.4. “&&”符號用法

shell 在執行某個命令的時候,會返回一個返回值,該返回值保存在 shell 變量 $? 中。當 $? == 0 時,表示執行成功;當 $? == 1 時(我認爲是非0的數,返回值在0-255間),表示執行失敗。

有時候,下一條命令依賴前一條命令是否執行成功。如:在成功地執行一條命令之後再執行另一條命令,或者在一條命令執行失敗後再執行另一條命令等。shell 提供了 && 和 || 來實現命令執行控制的功能,shell 將根據 && 或 || 前面命令的返回值來控制其後面命令的執行。
語法格式如下:

command1 && command2 [&& command3 ...]

命令之間使用 && 連接,實現邏輯與的功能。
只有在 && 左邊的命令返回真(命令返回值 $? == 0),&& 右邊的命令纔會被執行。
只要有一個命令返回假(命令返回值 $? == 1),後面的命令就不會被執行。

1.5. “||”符號用法

語法格式如下:
command1 || command2 [|| command3 ...]

用法說明邏輯或的功能。命令之間使用 || 連接,實現邏輯或的功能。
只有在 || 左邊的命令返回假(命令返回值 $? == 1),|| 右邊的命令纔會被執行。這和 c 語言中的邏輯或語法功能相同,即實現短路邏輯或操作。
只要有一個命令返回真(命令返回值 $? == 0),後面的命令就不會被執行。 –直到返回真的地方停止執行。

舉例:ping命令判斷存活主機

ping -c 1 -w 1 192.168.1.1 &> /dev/null && result=0 ||result=1
if [ "$result" == 0 ];then
  echo "192.168.1.1 is UP!"    
else
  echo "192.168.2.1 is DOWN!"
fi

注意 &>要連起來寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章