如何檢查包含在KSH shell腳本語法的正確性不執行呢?爲了明確我的觀點:在perl中我們可以執行命令:shell腳本 - 檢查語法
perl -c test_script.pl
檢查語法。是類似於這在ksh中可用?
如何檢查包含在KSH shell腳本語法的正確性不執行呢?爲了明確我的觀點:在perl中我們可以執行命令:shell腳本 - 檢查語法
perl -c test_script.pl
檢查語法。是類似於這在ksh中可用?
ksh -n
大部分Borne Shell家族都接受-n。 tcsh也是如此。在如果
#!/bin/bash
if [ -f "buggyScript.sh" ; then
echo "found this buggy script"
fi
注意失蹤]:
我做了一個小測試用下面的代碼。現在我輸入了
bash -n buggyScript.sh
並且缺少]未被檢測到。
第二個測試腳本是這樣的:
#!/bin/bash
if [ -f "buggyScript.sh" ]; then
echo "found this buggy script"
注意失蹤Fi的在IF結束。此測試與
bash -n buggyScript.sh
返回
buggyScript.sh: line 5: syntax error: unexpected end of file
結論: 測試與n選項的腳本檢測到一些錯誤,但絕不是全部。所以我想你只有在執行腳本時纔會發現所有錯誤。
您說的測試未能檢測到語法錯誤,其中語法錯誤實際上不是語法錯誤... echo是一個命令(確定是內置的,但仍然是命令),所以ksh/bash不會檢查拼寫/你的命令的語法。 類似地,「[」,有效地是用於測試命令的別名,並且命令預計閉括號「]」作爲它的語法,而不是KSH/bash的的一部分。 So -n在罐子上說什麼,你只是沒有正確閱讀錫罐! :-)
它似乎並不奏效。我執行KSH -n test.sh但它並沒有列出這是那裏test.sh – sachin
是它的工作的語法錯誤。我相信沒有語法錯誤。如果您向我們展示腳本,我們可以分析您的期望是否發現語法錯誤是正確的。 – Jens
然後用'sh -n腳本'嘗試。它應該工作。但是,如果您的語法錯誤位於無效的命令名稱中,則只會在運行時捕獲。 'sh -n'只檢查實際的shell語法。 – tripleee