麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

詳解shell語法檢查模式

2019-11-11 04:58:34
字體:
來源:轉載
供稿:網友

啟用 verbose 調試模式

在進入本指導的重點之前,讓我們簡要地探索下 verbose 模式。它可以用 -v 調試選項來啟用,它會告訴 shell 在讀取時顯示每行。要展示這個如何工作,下面是一個示例腳本來批量將 PNG 圖片轉換成 JPG 格式。

將下面內容輸入(或者復制粘貼)到一個文件中。

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

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

$ chmod +x script.sh

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

$ bash -v script.sh

顯示shell腳本中的所有行                                                                 

在 Shell 腳本中啟用語法檢查調試模式使用 -n 激活語法檢查模式

它會讓 shell 讀取所有的命令,但是不會執行它們,它(shell)只會檢查語法。一旦 shell 腳本中發現有錯誤,shell 會在終端中輸出錯誤,不然就不會顯示任何東西。

激活語法檢查的命令如下:

$ bash -n script.sh

因為腳本中的語法是正確的,上面的命令不會顯示任何東西。所以,讓我們嘗試刪除結束 for 循環的 done 來看下是否會顯示錯誤:

下面是修改過的含有 bug 的批量將 png 圖片轉換成 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

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

$ bash -n script.sh

檢查 shell 腳本語法                                                                       

從上面的輸出中,我們看到我們的腳本中有一個錯誤,for 循環缺少了一個結束的 done 關鍵字。shell 腳本從頭到尾檢查文件,一旦沒有找到它(done),shell 會打印出一個語法錯誤:

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

我們可以同時結合 verbose 模式和語法檢查模式:

$ bash -vn script.sh

在腳本中同時啟用 verbose 檢查和語法檢查                                                             

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

如下面的例子:

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

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

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

此外,我們可以用內置的 set 命令來在腳本中啟用調試模式。

下面的例子中,我們只檢查腳本中的 for 循環語法。

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

再一次保存并執行腳本:

$ ./script.sh

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

本文

免費提供最新linux技術教程書籍,為開源技術愛好者努力做得更多更好:http://www.linuxPRobe.com/


上一篇:注解TXT

下一篇:算法--遞歸與分治策略

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产免费福利视频 | 看一级毛片 | 欧美人xx| 国产色91 | 国产精品69页 | 精品国产91久久久久久久 | 最近高清无吗免费看 | 圆产精品久久久久久久久久久 | 国产成人在线免费观看视频 | 久草热久 | 国产在线地址 | 成年人小视频在线观看 | 久草干| 黄视频在线网站 | 成人免费观看毛片 | 亚洲最大的成人网 | 久久中文字幕在线观看 | 欧美a欧美| 久久久久.com| 国产v综合v亚洲欧美久久 | 日韩黄色影视 | 久久毛片免费观看 | 欧美日韩在线免费观看 | 99精品国产小情侣高潮露脸在线 | 黄色大片大毛片 | 色视频在线| 黄网站在线免费看 | 99视频网 | 国产精品久久久久久久久久iiiii | 国产精品免费观看视频 | www.48xx.com| 日本欧美国产 | 亚洲一区免费观看 | 九九热在线视频观看 | 成人羞羞视频在线观看 | 欧美一级爱爱 | 91精品国产91久久久 | 久久久国产精品成人免费 | 欧洲精品久久 | 日本精品婷婷久久爽一下 | 青青草成人影视 |