
У меня есть проект с некоторыми файлами lua и bash. Я хочу перебрать все файлы и в зависимости от shebang выполнить проверку валидности.
решение1
Вы можете использовать find
и awk
для проверки первой строки (ваш awk должен поддерживать FNR, как это делают awk POSIX) и добавить некоторые шаблоны поиска для поиска (например, исключение скрытых папок):
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'