Я делаю проект C, который включает в себя много статических ссылок.

Чтобы избавиться от ошибок "объявления функций", я буду использовать простое решение - заголовочный файл с прототипами функций.

Я написал этот сценарий:

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

Он должен создать файл с именем proto.h и сохранить там прототипы функций.

Заметки:

find -type f -name "*.c" эта команда возвращает имена всех c файлов в каталоге этого скрипта.

например ./folder1/file1.c

cproto <i>file</i> => это создает прототипы функций из функций, найденных в file .

например, <code>double myfunction(int a,char b);

Проблема:

Код генерирует пустой файл.

Что не так с этим скриптом bash?

1 ответ1

3

Есть, конечно, много способов изменить это. Вот только один:

 #!/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

Ошибка в перенаправлении в cproto... : простой > сначала стирает файл назначения, а затем записывает в него. Вместо этого >> добавляет к файлу назначения, не разрушая его. Цикл if существует только для того, чтобы убедиться, что при первом проходе вы не добавите несуществующий файл: в добавлении несуществующего файла нет ничего плохого, не выдается никакой ошибки; просто я хочу убедиться, что это простой, обычный файл, прежде чем писать в него.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .