日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在 Shell 脚本中执行语法检查调试模式

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在 Shell 脚本中执行语法检查调试模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • shell 腳本調試系列
  • 概述
  • 啟用 verbose 調試模式
  • 在 Shell 腳本中啟用語法檢查調試模式
  • 通過修改腳本的首行來啟用腳本檢查
  • 內置的 set 命令來在腳本中啟用調試模式

shell 腳本調試系列

Linux 中啟用 Shell 腳本的調試模式

在 Shell 腳本中執行語法檢查調試模式

在 Shell 腳本中跟蹤調試命令的執行


概述

寫完腳本后,建議在運行腳本之前先檢查腳本中的語法,而不是查看它們的輸出以確認它們是否正常工作。

在本系列的這一部分,我們將了解如何使用語法檢查調試模式。記住我們之前在本系列的 Linux 中啟用 Shell 腳本的調試模式
中解釋了不同的調試選項,在這里,我們將使用它們來執行腳本調試。


啟用 verbose 調試模式

在進入本指導的重點之前,讓我們簡要地探索下 verbose 模式。它可以用 -v 調試選項來啟用,它會告訴 shell 在讀取時顯示每行。

要展示這個如何工作,下面是一個示例腳本來批量將 PNG 圖片轉換成 JPG 格式。

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

#!/bin/bash #convert for image in *.png; do convert "$image" "${image%.png}.jpg" echo "image $image converted to ${image%.png}.jpg" done exit 0

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

$ chmod +x script.sh

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

$ bash -v script.sh

在 Shell 腳本中啟用語法檢查調試模式

回到我們主題的重點,-n 激活語法檢查模式。它會讓 shell 讀取所有的命令,但是不會執行它們,它(shell)只會檢查語法。

一旦 shell 腳本中發現有錯誤,shell 會在終端中輸出錯誤,不然就不會顯示任何東西。

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

$ bash -n script.sh

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

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

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

$ bash -n script.sh

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

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

我們可以同時結合 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

內置的 set 命令來在腳本中啟用調試模式

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

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

再一次保存并執行腳本:

$ ./script.sh

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

總結

以上是生活随笔為你收集整理的在 Shell 脚本中执行语法检查调试模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。