您好,登錄后才能下訂單哦!
這篇文章主要為大家分析了Bash腳本中處理錯誤的常用方法有哪些的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“Bash腳本中處理錯誤的常用方法有哪些”的知識吧。
下面小編將為大家分享一下在 Bash 腳本中處理錯誤的一些常用的方法,如何獲取錯誤代碼、在執行腳本時獲得詳細輸出、處理調試功能和錯誤重定向等,有需要的小伙伴可以參考一下。
在 Bash 腳本中,$?
將打印退出狀態。如果返回零,則表示沒有錯誤。如果不為零,結論就是任務可能存在一些問題。
如下是一個簡單例子:
[root@localhost ~]# cat myscript.sh#!/bin/bashmkdir learningecho $?
如果運行上述腳本一次,它將打印 0,因為該目錄不存在,因此腳本將創建它。如果第二次運行該腳本,將獲得一個非零值,如下所示:
[root@localhost ~]# sh myscript.sh0 [root@localhost ~]# sh myscript.shmkdir: cannot create directory ‘learning’: File exists 1
建議通過將 set -x
命令添加到 shell 腳本來啟用調試模式,如下所示:
[root@localhost ~]# cat test3.sh#!/bin/bashset -xecho "Hello World!"mkdiir testing
然后運行腳本查看:
[root@localhost ~]# sh test3.sh+ echo 'Hello World!'Hello World! + mkdiir testing test3.sh: line 4: mkdiir: command not found
可以編寫如下調試函數,這有助于隨時調用它,使用以下示例:
[root@localhost ~]# cat debug.sh#!/bin/bash_DEBUG="on"function DEBUG() { [ "$_DEBUG" == "on" ] && $@} DEBUG echo 'Testing Debugging'DEBUG set -x a=2 b=3 c=$(( $a + $b )) DEBUG set +x
輸出內容如下:
[root@localhost ~]# sh debug.shTesting Debugging + a=2 + b=3 + c=5 + DEBUG set +x + '[' on == on ']'+ set +x 2 + 3 = 5
可以使用標準錯誤輸出將所有系統錯誤重定向到自定義文件,標準錯誤可以用數字 2 表示。在 Bash shell 執行它,如下所示:
[root@localhost ~]# mkdir users 2> errors.txt[root@localhost ~]# cat errors.txtmkdir: cannot create directory ‘users’: File exists
大多數時候,很難在腳本中找到確切的行號。要打印帶有錯誤的行號,請使用PS4
選項,其中的$LINENO
是預定義好的變量。
[root@localhost ~]# cat test3.sh#!/bin/bashPS4='$LINENO: 'set -xecho "Hello World!"mkdiir testing
可以在閱讀錯誤時輕松查看行號:
[root@localhost ~]# sh test3.sh5: echo 'Hello World!'Hello World! 6: mkdiir testing test3.sh: line 6: mkdiir: command not found
關于“Bash腳本中處理錯誤的常用方法有哪些”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。