Gültigkeitsprüfung aller Dateien in einem Ordner abhängig vom Shebang

Gültigkeitsprüfung aller Dateien in einem Ordner abhängig vom Shebang

Ich habe ein Projekt mit einigen Lua- und einigen Bash-Dateien. Ich möchte eine Schleife über alle Dateien ausführen und je nach Shebang eine Gültigkeitsprüfung durchführen.

Antwort1

Sie können findund verwenden awk, um die erste Zeile zu prüfen (Ihr awk muss FNR unterstützen, wie es bei POSIX-awks der Fall ist) und einige zu suchende Suchmuster hinzufügen (wie das Ausschließen versteckter Ordner):

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

Hinweis: Verwenden Sie IFS=, um das Aufteilen von Dateinamen zu vermeiden, die eines der folgenden Elemente enthalten $IFS, zum Beispiel:'a b'

verwandte Informationen