validation verifica todos os arquivos em uma pasta dependendo do shebang [closed]

2

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

    
por rubo77 07.07.2017 / 08:34

1 resposta

1

Você pode usar find e awk para verificar a primeira linha (seu awk precisa suportar FNR, como fazem os POSIX awks) 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'

    
por 07.07.2017 / 08:34