shebangに従ってフォルダ内のすべてのファイルを検証してください。 [閉じる]

shebangに従ってフォルダ内のすべてのファイルを検証してください。 [閉じる]

いくつかのluaといくつかのbashファイルを含むプロジェクトがあります。私はすべてのファイルを繰り返したいと思い、shebangに従って検証を実行したいと思います。

答え1

最初の行を使用findして awk確認し(awkはPOSIX awksと同様にFNRをサポートする必要があります)、いくつかの検索パターンを追加することができます(たとえば、隠しフォルダを除く)。

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'

関連情報