轉自:https://www.jianshu.com/p/617c1ee1e46eshell
格式ruby
command1 && command2
&&左邊的命令(命令1)返回真(即返回0,成功被執行)後,&&右邊的命令(命令2)纔可以被執行;換句話說,「若是這個命令執行成功&&那麼執行這個命令」。
語法格式以下:bash
command1 && command2 && command3 ...
示例1中,cp命令首先從root的家目錄複製文件文件anaconda-ks.cfg到 /data目錄下;執行成功後,使用 rm 命令刪除源文件;若是刪除成功則輸出提示信息"SUCCESS"。ui
格式spa
command1 || command2
||則與&&相反。若是||左邊的命令(command1)未執行成功,那麼就執行||右邊的命令(command2);或者換句話說,「若是這個命令執行失敗了||那麼就執行這個命令。3d
命令之間使用 || 鏈接,實現邏輯或的功能。unix
只有在 || 左邊的命令返回假(命令返回值 $? == 1),|| 右邊的命令纔會被執行。這和 c 語言中的邏輯或語法功能相同,即實現短路邏輯或操做。code
只要有一個命令返回真(命令返回值 $? == 0),後面的命令就不會被執行。orm
示例2中,若是 dir目錄不存在,將輸出提示信息 fail 。blog
示例3中,若是 dir 目錄存在,將輸出 success 提示信息;不然輸出 fail 提示信息。
6.下面是一個shell腳本中經常使用的||組合示例
echo $BASH |grep -q 'bash' || { exec bash "$0" "$@" || exit 1; } 系統調用exec是以新的進程去代替原來的進程,但進程的PID保持不變。所以,能夠這樣認爲,exec系統調用並無建立新的進程,只是替換了原來進程上下文的內容。原進程的代碼段,數據段,堆棧段被新的進程所代替。
若是但願把幾個命令合在一塊兒執行,shell提供了兩種方法。既能夠在當前shell也能夠在子shell中執行一組命令。
格式:
(command1;command2;command3....) 多個命令之間用;分隔
示例4中,若是目錄dir不存在,則執行命令組合。
若是使用{}來代替(),那麼相應的命令將在子shell而不是當前shell中做爲一個總體被執行,只有在{}中全部命令的輸出做爲一個總體被重定向時,其中的命令才被放到子shell中執行,不然在當前shell執行。
它的通常形式爲:
{ command1;command2;command3… } 注意:在使用{}時,{}與命令之間必須使用一個空格
示例5中,使用{}則在子shell中執行了打印操做
做者:shu_ke
連接:https://www.jianshu.com/p/617c1ee1e46e
來源:簡書
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
格式
command1 && command2
&&左邊的命令(命令1)返回真(即返回0,成功被執行)後,&&右邊的命令(命令2)纔可以被執行;換句話說,「若是這個命令執行成功&&那麼執行這個命令」。
語法格式以下:
command1 && command2 && command3 ...
示例1中,cp命令首先從root的家目錄複製文件文件anaconda-ks.cfg到 /data目錄下;執行成功後,使用 rm 命令刪除源文件;若是刪除成功則輸出提示信息"SUCCESS"。
格式
command1 || command2
||則與&&相反。若是||左邊的命令(command1)未執行成功,那麼就執行||右邊的命令(command2);或者換句話說,「若是這個命令執行失敗了||那麼就執行這個命令。
命令之間使用 || 鏈接,實現邏輯或的功能。
只有在 || 左邊的命令返回假(命令返回值 $? == 1),|| 右邊的命令纔會被執行。這和 c 語言中的邏輯或語法功能相同,即實現短路邏輯或操做。
只要有一個命令返回真(命令返回值 $? == 0),後面的命令就不會被執行。
示例2中,若是 dir目錄不存在,將輸出提示信息 fail 。
示例3中,若是 dir 目錄存在,將輸出 success 提示信息;不然輸出 fail 提示信息。
6.下面是一個shell腳本中經常使用的||組合示例
echo $BASH |grep -q 'bash' || { exec bash "$0" "$@" || exit 1; } 系統調用exec是以新的進程去代替原來的進程,但進程的PID保持不變。所以,能夠這樣認爲,exec系統調用並無建立新的進程,只是替換了原來進程上下文的內容。原進程的代碼段,數據段,堆棧段被新的進程所代替。
若是但願把幾個命令合在一塊兒執行,shell提供了兩種方法。既能夠在當前shell也能夠在子shell中執行一組命令。
格式:
(command1;command2;command3....) 多個命令之間用;分隔
示例4中,若是目錄dir不存在,則執行命令組合。
若是使用{}來代替(),那麼相應的命令將在子shell而不是當前shell中做爲一個總體被執行,只有在{}中全部命令的輸出做爲一個總體被重定向時,其中的命令才被放到子shell中執行,不然在當前shell執行。
它的通常形式爲:
{ command1;command2;command3… } 注意:在使用{}時,{}與命令之間必須使用一個空格
示例5中,使用{}則在子shell中執行了打印操做
做者:shu_ke連接:https://www.jianshu.com/p/617c1ee1e46e來源:簡書著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。