1. 程式人生 > >Linux Shell程式設計中的幾個特殊符號命令 & 、&& 、 ||

Linux Shell程式設計中的幾個特殊符號命令 & 、&& 、 ||

  1. & 放在啟動引數後面表示設定此程序為後臺程序

       預設情況下,程序是前臺程序,這時就把Shell給佔據了,我們無法進行其他操作,對於那些沒有互動的程序,很多時候,我們希望將其在後臺啟動,可以在啟動引數的時候加一個’&’實現這個目的。

   2.  &&和||

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

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

語法格式如下:

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

1 命令之間使用 && 連線,實現
邏輯與的功能。 

2 只有在 && 左邊的命令返回真(命令返回值 $? == 0),&& 右邊的命令才會被執行。 

3 只要有一個命令返回假(命令返回值 $? == 1),後面的命令就不會被執行。 

邏輯或的功能

command1 || command2 [|| command3 ...] 

1 命令之間使用 || 連線,實現
邏輯或的功能。 

2 只有在 || 左邊的命令返回假(命令返回值 $? == 1),|| 右邊的命令才會被執行。這和 c 語言中的邏輯或語法功能相同,即實現短路邏輯或操作。 

3 只要有一個命令返回真(命令返回值 $? == 0),後面的命令就不會被執行。 –直到返回真的地方停止執行。

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

    ping -c 1 -w 1 192.168.2.1 &> /dev/null && result=0 ||result=1     if [ "$result" == 0 ];then       echo "192.168.2.1 is UP!"     else       echo "192.168.2.1 is DOWN!"     fi 注意 &>要連起來寫。