script BASH que gera um arquivo de cabeçalho com protótipos de função

0

Estou fazendo um projeto em C que envolve muita vinculação estática.

Para se livrar dos erros de "declaração de função implícita", usarei uma solução simples - um arquivo de cabeçalho com protótipos de função.

Eu escrevi este script:

#!/bin/bash
for file_to_parse in 'find -type f -name "*.c"'; do
    cproto $file_to_parse > proto.h 2> /dev/null
done

Ele deve criar um arquivo chamado proto.h e armazenar protótipos de função lá.

Notas:

find -type f -name "*.c" este comando retorna os nomes de caminho de todos os arquivos c no diretório deste script.

por exemplo, ./folder1/file1.c

cproto <i>file</i> = > isso cria protótipos de função a partir de funções encontradas em file .

por exemplo, <code>double myfunction(int a,char b);

Problema:

O código gera um arquivo vazio.

O que há de errado com este script bash?

    
por pitastic 07.07.2015 / 14:24

1 resposta

3

Existem certamente muitas maneiras de mudar isso. Aqui está apenas um:

 #!/bin/bash
 if [ ! -f proto.h ]; then
       touch proto.h
 fi
 for file_to_parse in 'find -type f -name "*.c"'; do
    cproto $file_to_parse >> proto.h 2> /dev/null
 done

O erro está no redirecionamento na linha cproto... : o simples > primeiro limpa o arquivo de destino e grava nele. Em vez disso, >> acrescenta ao arquivo de destino sem destruí-lo. O loop if está lá apenas para garantir que, na primeira passagem, você não esteja anexando a um arquivo inexistente: não há nada de errado em acrescentar a um arquivo inexistente, nenhum erro é lançado; é só que eu gostaria de ter certeza de que é um arquivo simples, regular , antes de escrevê-lo.

    
por 07.07.2015 / 15:16