根據 shebang 檢查資料夾中所有檔案的有效性

根據 shebang 檢查資料夾中所有檔案的有效性

我有一個包含一些 lua 和一些 bash 檔案的專案。我想循環所有文件,並根據 shebang 我想執行有效性檢查。

答案1

您可以使用findawk檢查第一行(您的 awk 必須支援 FNR,就像 POSIX awks 一樣)並添加一些搜尋模式來尋找(例如排除隱藏資料夾):

echo "check bash files ..."
find . -not -path '*/\.*' \
  -type f -exec awk 'FNR == 1 && /^#!.*sh/{print FILENAME}' {} + | \
  while IFS= read -r f; do 
    echo "checking $f ..."
    bash -n "$f"
done

注意:用於IFS=避免拆分包含其中之一的檔案名$IFS,例如:'a b'

相關內容