проверка всех файлов в папке на валидность в зависимости от шебанга

проверка всех файлов в папке на валидность в зависимости от шебанга

У меня есть проект с некоторыми файлами 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'

Связанный контент