日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
詳解shell語法檢查

寫過shell腳本的人都知道,即便出現(xiàn)一些簡單的語法錯誤,運行的時候也可能沒有辦法發(fā)現(xiàn)。有些看似運行正確的腳本,實際上可能在某些分支,某些場景下仍然出現(xiàn)錯誤,而有的寫法可能運行正常,但是卻不符合POSIX標(biāo)準(zhǔn),不具備可移植性,本篇文章重點為大家講解一下shell語法檢查,有需要的小伙伴可以參考一下。

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、平果網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為平果等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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

在進(jìn)入本指導(dǎo)的重點之前,讓我們簡要地探索下 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 腳本中啟用語法檢查調(diào)試模式

使用 -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

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

$ bash -n script.sh

從上面的輸出中,我們看到我們的腳本中有一個錯誤,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

我們還可以通過修改腳本的首行來啟用腳本檢查

如下面的例子:

#!/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

如上所示,保存文件并在運行中檢查語法:

$ ./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

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


網(wǎng)頁名稱:詳解shell語法檢查
文章路徑:http://www.dlmjj.cn/article/cdsspdd.html