国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

詳解shell語(yǔ)法檢查模式

2019-11-11 03:48:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

啟用 verbose 調(diào)試模式

在進(jìn)入本指導(dǎo)的重點(diǎn)之前,讓我們簡(jiǎn)要地探索下 verbose 模式。它可以用 -v 調(diào)試選項(xiàng)來(lái)啟用,它會(huì)告訴 shell 在讀取時(shí)顯示每行。要展示這個(gè)如何工作,下面是一個(gè)示例腳本來(lái)批量將 PNG 圖片轉(zhuǎn)換成 JPG 格式。

將下面內(nèi)容輸入(或者復(fù)制粘貼)到一個(gè)文件中。

#!/bin/bash#convertfor image in *.png; doconvert "$image" "${image%.png}.jpg"echo "image $image converted to ${image%.png}.jpg"doneexit 0

接著保存文件,并用下面的命令使腳本可執(zhí)行:

$ chmod +x script.sh

我們可以執(zhí)行腳本并顯示它被 Shell 讀取到的每一行:

$ bash -v script.sh

顯示shell腳本中的所有行                                                                 

在 Shell 腳本中啟用語(yǔ)法檢查調(diào)試模式使用 -n 激活語(yǔ)法檢查模式

它會(huì)讓 shell 讀取所有的命令,但是不會(huì)執(zhí)行它們,它(shell)只會(huì)檢查語(yǔ)法。一旦 shell 腳本中發(fā)現(xiàn)有錯(cuò)誤,shell 會(huì)在終端中輸出錯(cuò)誤,不然就不會(huì)顯示任何東西。

激活語(yǔ)法檢查的命令如下:

$ bash -n script.sh

因?yàn)槟_本中的語(yǔ)法是正確的,上面的命令不會(huì)顯示任何東西。所以,讓我們嘗試刪除結(jié)束 for 循環(huán)的 done 來(lái)看下是否會(huì)顯示錯(cuò)誤:

下面是修改過(guò)的含有 bug 的批量將 png 圖片轉(zhuǎn)換成 jpg 格式的腳本。

#!/bin/bash#script with a bug#convertfor image in *.png; doconvert  "$image"  "${image%.png}.jpg"echo "image $image converted to ${image%.png}.jpg"exit 0

保存文件,接著運(yùn)行該腳本并執(zhí)行語(yǔ)法檢查:

$ bash -n script.sh

檢查 shell 腳本語(yǔ)法                                                                       

從上面的輸出中,我們看到我們的腳本中有一個(gè)錯(cuò)誤,for 循環(huán)缺少了一個(gè)結(jié)束的 done 關(guān)鍵字。shell 腳本從頭到尾檢查文件,一旦沒(méi)有找到它(done),shell 會(huì)打印出一個(gè)語(yǔ)法錯(cuò)誤:

script.sh: line 11: syntax error: unexpected end of file

我們可以同時(shí)結(jié)合 verbose 模式和語(yǔ)法檢查模式:

$ bash -vn script.sh

在腳本中同時(shí)啟用 verbose 檢查和語(yǔ)法檢查                                                             

我們還可以通過(guò)修改腳本的首行來(lái)啟用腳本檢查

如下面的例子:

#!/bin/bash -n#altering the first line of a script to enable syntax checking#convertfor image in *.png; doconvert  "$image"  "${image%.png}.jpg"echo "image $image converted to ${image%.png}.jpg"exit 0

如上所示,保存文件并在運(yùn)行中檢查語(yǔ)法:

$ ./script.shscript.sh: line 12: syntax error: unexpected end of file

此外,我們可以用內(nèi)置的 set 命令來(lái)在腳本中啟用調(diào)試模式。

下面的例子中,我們只檢查腳本中的 for 循環(huán)語(yǔ)法。

#!/bin/bash#using set shell built-in command to enable debugging#convert#enable debuggingset -nfor image in *.png; doconvert  "$image"  "${image%.png}.jpg"echo "image $image converted to ${image%.png}.jpg"#disable debuggingset +nexit 0

再一次保存并執(zhí)行腳本:

$ ./script.sh

總的來(lái)說(shuō),我們應(yīng)該保證在執(zhí)行 Shell 腳本之前先檢查腳本語(yǔ)法以捕捉錯(cuò)誤。

本文

免費(fèi)提供最新linux技術(shù)教程書(shū)籍,為開(kāi)源技術(shù)愛(ài)好者努力做得更多更好:http://www.linuxPRobe.com/


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 湘潭市| 兰考县| 杂多县| 六盘水市| 财经| 驻马店市| 报价| 怀仁县| 东城区| 望谟县| 电白县| 彰化市| 达孜县| 沁水县| 兴宁市| 图片| 汪清县| 广水市| 梁平县| 万山特区| 托里县| 巴中市| 望江县| 山东省| 乌恰县| 宁陕县| 三明市| 平谷区| 桑植县| 时尚| 濮阳市| 永丰县| 贵州省| 阜城县| 蓝田县| 方正县| 和硕县| 陆河县| 铜山县| 山东| 高清|