
我有一個包含一些 lua 和一些 bash 檔案的專案。我想循環所有文件,並根據 shebang 我想執行有效性檢查。
答案1
您可以使用find
和 awk
檢查第一行(您的 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'