我有一个包含一些 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'