
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 find
e awk
para 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'