
いくつかの 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'