新聞中心
本篇文章將為大家分享一下在 Bash 腳本中處理錯(cuò)誤的一些常用的方法,如何獲取錯(cuò)誤代碼、在執(zhí)行腳本時(shí)獲得詳細(xì)輸出、處理調(diào)試功能和錯(cuò)誤重定向等,有需要的小伙伴可以參考一下。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比芮城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式芮城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋芮城地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
img
退出狀態(tài)
在 Bash 腳本中,$?將打印退出狀態(tài)。如果返回零,則表示沒(méi)有錯(cuò)誤。如果不為零,結(jié)論就是任務(wù)可能存在一些問(wèn)題。
如下是一個(gè)簡(jiǎn)單例子:
[root@localhost ~]# cat myscript.sh
#!/bin/bash
mkdir learning
echo $?
如果運(yùn)行上述腳本一次,它將打印 0,因?yàn)樵撃夸洸淮嬖冢虼四_本將創(chuàng)建它。如果第二次運(yùn)行該腳本,將獲得一個(gè)非零值,如下所示:
[root@localhost ~]# sh myscript.sh
0
[root@localhost ~]# sh myscript.sh
mkdir: cannot create directory ‘learning’: File exists
1
Bash 腳本中的錯(cuò)誤處理Bash 腳本中的錯(cuò)誤處理
最佳實(shí)踐
建議通過(guò)將 set -x 命令添加到 shell 腳本來(lái)啟用調(diào)試模式,如下所示:
[root@localhost ~]# cat test3.sh
#!/bin/bash
set -x
echo "Hello World!"
mkdiir testing
然后運(yùn)行腳本查看:
[root@localhost ~]# sh test3.sh
+ echo 'Hello World!'
Hello World!
+ mkdiir testing
test3.sh: line 4: mkdiir: command not found
可以編寫如下調(diào)試函數(shù),這有助于隨時(shí)調(diào)用它,使用以下示例:
[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
輸出內(nèi)容如下:
[root@localhost ~]# sh debug.sh
Testing Debugging
+ a=2
+ b=3
+ c=5
+ DEBUG set +x
+ '[' on == on ']'
+ set +x
2 + 3 = 5
Bash 腳本中的錯(cuò)誤處理Bash 腳本中的錯(cuò)誤處理
錯(cuò)誤重定向
可以使用標(biāo)準(zhǔn)錯(cuò)誤輸出將所有系統(tǒng)錯(cuò)誤重定向到自定義文件,標(biāo)準(zhǔn)錯(cuò)誤可以用數(shù)字 2 表示。在 Bash shell 執(zhí)行它,如下所示:
[root@localhost ~]# mkdir users 2> errors.txt
[root@localhost ~]# cat errors.txt
mkdir: cannot create directory ‘users’: File exists
大多數(shù)時(shí)候,很難在腳本中找到確切的行號(hào)。要打印帶有錯(cuò)誤的行號(hào),請(qǐng)使用PS4選項(xiàng),其中的$LINENO是預(yù)定義好的變量。
[root@localhost ~]# cat test3.sh
#!/bin/bash
PS4='$LINENO: '
set -x
echo "Hello World!"
mkdiir testing
可以在閱讀錯(cuò)誤時(shí)輕松查看行號(hào):
[root@localhost ~]# sh test3.sh
5: echo 'Hello World!'
Hello World!
6: mkdiir testing
test3.sh: line 6: mkdiir: command not found
Bash 腳本中的錯(cuò)誤處理Bash 腳本中的錯(cuò)誤處理
網(wǎng)頁(yè)題目:Bash腳本中處理錯(cuò)誤的一些常用的方法
新聞來(lái)源:http://m.fisionsoft.com.cn/article/djhposp.html


咨詢
建站咨詢
