這篇文章將為大家詳細(xì)講解有關(guān)怎么在Shell腳本中執(zhí)行語法檢查調(diào)試模式,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
威寧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
啟用 verbose 調(diào)試模式
在進(jìn)入本指導(dǎo)的重點(diǎn)之前,讓我們簡要地探索下 verbose 模式。它可以用 -v 調(diào)試選項來啟用,它會告訴 shell 在讀取時顯示每行。
要展示這個如何工作,下面是一個示例腳本來批量將 PNG 圖片轉(zhuǎn)換成 JPG 格式。
將下面內(nèi)容輸入(或者復(fù)制粘貼)到一個文件中。
#!/bin/bash #convert for image in *.png; do convert "$image" "${image%.png}.jpg" echo "image $image converted to ${image%.png}.jpg" done exit 0接著保存文件,并用下面的命令使腳本可執(zhí)行:
$ chmod +x script.sh
我們可以執(zhí)行腳本并顯示它被 Shell 讀取到的每一行:
$ bash -v script.sh

顯示shell腳本中的所有行
在 Shell 腳本中啟用語法檢查調(diào)試模式
回到我們主題的重點(diǎn),-n 激活語法檢查模式。它會讓 shell 讀取所有的命令,但是不會執(zhí)行它們,它(shell)只會檢查語法。
一旦 shell 腳本中發(fā)現(xiàn)有錯誤,shell 會在終端中輸出錯誤,不然就不會顯示任何東西。
激活語法檢查的命令如下:
$ bash -n script.sh
因為腳本中的語法是正確的,上面的命令不會顯示任何東西。所以,讓我們嘗試刪除結(jié)束 for 循環(huán)的 done 來看下是否會顯示錯誤:
下面是修改過的含有 bug 的批量將 png 圖片轉(zhuǎn)換成 jpg 格式的腳本。
#!/bin/bash #script with a bug #convert for image in *.png; do convert "$image" "${image%.png}.jpg" echo "image $image converted to ${image%.png}.jpg" exit 0保存文件,接著運(yùn)行該腳本并執(zhí)行語法檢查:
$ bash -n script.sh

檢查 shell 腳本語法
從上面的輸出中,我們看到我們的腳本中有一個錯誤,for 循環(huán)缺少了一個結(jié)束的 done 關(guān)鍵字。shell 腳本從頭到尾檢查文件,一旦沒有找到它(done),shell 會打印出一個語法錯誤:
script.sh: line 11: syntax error: unexpected end of file
我們可以同時結(jié)合 verbose 模式和語法檢查模式:
$ bash -vn script.sh

在腳本中同時啟用 verbose 檢查和語法檢查
另外,我們可以通過修改腳本的首行來啟用腳本檢查,如下面的例子:
#!/bin/bash -n #altering the first line of a script to enable syntax checking #convert for image in *.png; do convert "$image" "${image%.png}.jpg" echo "image $image converted to ${image%.png}.jpg" exit 0如上所示,保存文件并在運(yùn)行中檢查語法:
$ ./script.sh script.sh: line 12: syntax error: unexpected end of file
此外,我們可以用內(nèi)置的 set 命令來在腳本中啟用調(diào)試模式。
下面的例子中,我們只檢查腳本中的 for 循環(huán)語法。
#!/bin/bash #using set shell built-in command to enable debugging #convert #enable debugging set -n for image in *.png; do convert "$image" "${image%.png}.jpg" echo "image $image converted to ${image%.png}.jpg" #disable debugging set +n exit 0再一次保存并執(zhí)行腳本:
$ ./script.sh
關(guān)于“怎么在Shell腳本中執(zhí)行語法檢查調(diào)試模式”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
分享標(biāo)題:怎么在Shell腳本中執(zhí)行語法檢查調(diào)試模式
分享鏈接:http://chinadenli.net/article8/pgjhop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、外貿(mào)建站、面包屑導(dǎo)航、商城網(wǎng)站、自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)