<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 功能強大 支持多語言、二開方便! 廣告
                # 練習 10:Bash:程序退出代碼(返回狀態) > 原文:[Exercise 10. Bash: program exit code (return status)](https://archive.fo/ygzso) > 譯者:[飛龍](https://github.com/wizardforcel) > 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) > 自豪地采用[谷歌翻譯](https://translate.google.cn/) 讓我們假設你要復制一個目錄。你可以通過鍵入`cp -vR /old/dir/path /new/dir/path`來執行此操作。發出此命令后,你可能想知道如何進行。目錄是否被復制?還是出現了一些錯誤,因為目標目錄空間不足,或其他出現錯誤的東西? 為了理解它是如何工作的,你必須了解兩個程序如何通信。我們先這樣說,bash 只是另一個程序,所以一般來說,當你發出上述的`cp`命令時,一個程序(bash,它是父進程)調用了另一個程序(`cp`,它是子進程)。 在 Linux 中,有一個標準機制,用于獲取從子進程到父進程的信息,這個機制稱為[退出狀態或返回代碼](http://en.wikipedia.org/wiki/Exit_status)。通過使用這種機制,當子進程完成其工作時,一個小的數字從子進程(或被調用者,這里是`cp`)傳遞給父進程(或調用者,這里是 bash)。當程序在執行期間沒遇到錯誤時,它返回`0`,如果發生某些錯誤,則此代碼不為零。就是這么簡單。Bash 中的這個退出代碼保存到`?`環境變量,你現在知道了,可以使用`$?`來訪問。 讓我再次重復一下我現在所說的話: ``` Bash 等待你的輸入 Bash 解析你的輸入 Bash 為你啟動程序,并等待這個程序退出 程序啟動 程序做你讓他做的事情 程序生成了退出代碼 程序退出并且將退出代碼返回給 Bash Bash 將這個退出代碼賦給變量 ? ``` 現在你學到了如何打印出你的程序的退出狀態。 ## 這樣做 ``` 1: ls 2: echo $? 3: ls /no/such/dir 4: echo $? ``` ## 你會看到什么 ``` user1@vm1:~$ ls hello.txt ls.out user1@vm1:~$ echo $? 0 user1@vm1:~$ ls /no/such/dir ls: cannot access /no/such/dir: No such file or directory user1@vm1:~$ echo $? 2 user1@vm1:~$ ``` ## 解釋 + 打印出一個目錄,成功。 + 打印出`ls`的退出代碼,它是`0`,這意味著`ls`沒有遇到任何錯誤。 + 嘗試打印出不存在的目錄,當然失敗。 + 打印`ls /no/such/dir`的退出代碼,它確實是非零。 ## 附加題 閱讀`man ls`的退出代碼部分。
                  <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>

                              哎呀哎呀视频在线观看