根据 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'

相关内容