validade verifica todos os arquivos em uma pasta dependendo do shebang

validade verifica todos os arquivos em uma pasta dependendo do shebang

Eu tenho um projeto com alguns arquivos lua e alguns arquivos bash. Quero fazer um loop em todos os arquivos e, dependendo do caso, quero executar uma verificação de validade.

Responder1

Você pode usar finde awkpara verificar a primeira linha (seu awk deve suportar FNR, como os awks POSIX fazem) e adicionar alguns padrões de pesquisa para localizar (como excluir pastas ocultas):

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

Nota: use IFS=para evitar a divisão de nomes de arquivos contendo um dos $IFS, por exemplo:'a b'

informação relacionada