<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 第六章 退出與退出狀態 > Bourne shell里存在不明確之處,但人們也會使用它們。 > > —— Chat Ramey 跟C程序類似,`exit` 命令被用來結束腳本。同時,它也會返回一個值,返回值可以被交給父進程。 每個命令都會返回一個退出狀態(exit status),有時也叫做返回狀態(return status)或退出碼(exit code)。命令執行成功返回0,如果返回一個非0值,通常情況下會被認為是一個錯誤代碼。一個運行狀態良好的UNIX命令、程序和工具在正常執行退出后都會返回一個0的退出碼,當然也有例外。 同樣地,腳本中的函數和腳本本身也會返回一個退出狀態。在腳本或者腳本函數中執行的最后的命令會決定它們的退出狀態。在腳本中,`exit nnn` 命令將會把nnn退出狀態碼傳遞給shell(nnn 必須是 0-255 之間的整型數)。 > ![note](http://tldp.org/LDP/abs/images/note.gif) 當一個腳本以不帶參數的 `exit` 來結束時,腳本的退出狀態由腳本最后執行命令決定(`exit` 命令之前)。 ```bash #!/bin/bash COMMAND_1 ... COMMAND_LAST # 將以最后的命令來決定退出狀態 exit ``` > `exit`,`exit $?` 以及省略 `exit` 效果等同。 ```bash #!/bin/bash COMMAND_1 ... COMMAND_LAST #將以最后的命令來決定退出狀態 exit $? ``` ```bash #!/bin/bash COMMAND_1 ... COMMAND_LAST #將以最后的命令來決定退出狀態 ``` `$?` 讀取上一個執行命令的退出狀態。在一個函數返回后,`$?` 給出函數最后執行的那條命令的退出狀態。這就是Bash函數的"返回值"。[^1] 在[管道](http://tldp.org/LDP/abs/html/special-chars.html#PIPEREF)執行后,`$?` 給出最后執行的那條命令的退出狀態。 在腳本終止后,命令行下鍵入`$?`會給出腳本的退出狀態,即在腳本中最后一條命令執行后的退出狀態。一般情況下,0為成功,1-255為失敗。 樣例 6-1. 退出與退出狀態 ```bash #!/bin/bash echo hello echo $? # 返回值為0,因為執行成功。 lskdf # 不認識的命令。 echo $? # 返回非0值,因為失敗了。 echo exit 113 # 將返回113給shell # 為了驗證這些,在腳本結束的地方使用“echo $?” # 按照慣例,'exit 0' 意味著執行成功, #+ 非0意味著錯誤或者異常情況。 # 查看附錄章節“退出碼的特殊含義” ``` `$?` 對于測試腳本中的命令的執行結果特別有用(查看樣例 16-35和樣例 16-20)。 > ![note](http://tldp.org/LDP/abs/images/note.gif) 邏輯非操作符 [!](http://tldp.org/LDP/abs/html/special-chars.html#NOTREF) 將會反轉測試或命令的結果,并且這將會影響退出狀態。 樣例 6-2. 否定一個條件使用! ```bash true # true 是 shell 內建命令。 echo "exit status of \"true\" = $?" # 0 ! true echo "exit status of \"! true\" = $?" # 1 # 注意在命令之間的 "!" 需要一個空格。 # !true 將導致一個"command not found"錯誤。 # # 如果一個命令以'!'開頭,那么將調用 Bash 的歷史機制,顯示這個命令被使用的歷史。 true !true # 這次就沒有錯誤了,但是同樣也沒有反轉。 # 它不過是重復之前的命令(true)。 # ============================================================ # # 在 _pipe_ 前使用 ! 將改變返回的退出狀態。 ls | bogus_command #bash: bogus_command: command not found echo $? #127 > ! ls | bogus_command #bash: bogus_command:command not found echo $? #0 # 注意 ! 不會改變管道的執行。 # 只改變退出狀態。 #============================================================ # > # 感謝 Stéphane Chazelas 和 Kristopher Newsome。 ``` > ![caution](http://tldp.org/LDP/abs/images/caution.gif) 某些特定的退出碼具有一些特定的[保留含義](http://tldp.org/LDP/abs/html/exitcodes.html#EXITCODESREF),用戶不應該在自己的腳本中重新定義它們。 [^1]: 在函數沒有用[return](http://tldp.org/LDP/abs/html/complexfunct.html#RETURNREF)來結束這個函數的情況下。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看