如何在 Linux 中不執行 Bash 指令碼的情況下檢查其語法?
在程式設計時,我們總有可能犯各種錯誤。編譯器和直譯器在這種情況下總是可以幫助我們,但為了使用它們,我們必須執行程式或某種 IDE,它會不斷檢查這些錯誤並在每次出現錯誤時提醒我們,以便我們能夠糾正它們。
如果我們不想在花哨的 IDE 中編寫程式碼,也不想執行程式,那麼如果存在任何選擇,我們可供選擇的餘地就非常少了。如果您正在編寫 Bash 指令碼,我們當然可以檢查 Bash 指令碼是否存在任何語法錯誤。
需要注意的是,我們能夠檢測到的語法錯誤僅限於編譯時錯誤,而不是執行時錯誤。
示例
讓我們探索一個示例。假設我們有一個 Bash 指令碼,其中包含類似以下的程式碼:
for f in *.txt; do mv "$f" "${f// /_}"; done以上程式碼很簡單,它只是迴圈遍歷當前目錄中所有 **.txt** 檔案,然後更改包含空格的檔名,因為它用 **_(下劃線)** 替換空格。
這非常有效,現在當我們執行命令來檢查上述 Bash 指令碼是否存在任何語法錯誤時,我們將不會得到任何輸出。
讓我們探索這個特定案例:
在您的終端中執行以下命令,其中也存在 sample.sh 檔案。
bash -n sample.sh
當我執行此命令時,終端將簡單地不輸出任何內容。
現在讓我們對我們的 sample.sh 進行更改,這將使其成為一個無效的 Bash 指令碼,然後我們將在終端中再次執行相同的命令。
for f in *.txt; do mv "$f" "${f// /_}"; done = true現在,當我們執行下面顯示的以下命令時:
bash -n sample.sh
輸出將是:
immukul@192 linux-questions-code % bash -n sample.sh
sample.sh: line 1: syntax error near unexpected token `='
sample.sh: line 1: `for f in *.txt; do mv "$f" "${f// /_}"; done = true'這就是我們能夠在不執行指令碼的情況下檢查語法錯誤的方法。現在,我們談到了這個命令只會檢測編譯時錯誤,而不是執行時錯誤,我們可以透過再次更改 sample.sh 來確認這一點:
for d in *.txt; do mv "$f" "${f// /_}"; done現在,當我們在上面顯示的 sample.sh 檔案上執行下面顯示的命令時:
bash -n sample.sh
輸出將不包含任何內容。
因此,最終的結論是,只有在您想要檢查語法錯誤時才應使用此命令。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP