シェバンに応じてフォルダ内のすべてのファイルの有効性をチェックする

シェバンに応じてフォルダ内のすべてのファイルの有効性をチェックする

いくつかの lua ファイルといくつかの bash ファイルを含むプロジェクトがあります。すべてのファイルをループし、shebang に応じて有効性チェックを実行したいと考えています。

答え1

および を使用してfind最初 awkの行をチェックし (awk は POSIX awk と同様に 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'

関連情報