
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 find
und 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'