Я пишу сценарий оболочки, который перебирает набор переменных, построчно редактирует исходный файл в соответствии с текущим значением итерации, затем переделывает и, наконец, вызывает только что скомпилированный двоичный файл. После исполнения старая строка восстанавливается.
Вот фрагмент:
#!/bin/sh
for i in 0..4; do
perl -i -pe "s/.*/{SUBS[$i]}/ if $. == ${LINE[$i]}" ${SOURCE}
make
./bin/myTool
perl -i -pe "s/.*/\/\/{SUBS[$i]}/ if $. == ${LINE[$i]}" ${SOURCE}
done
В основном у меня есть около 10 взаимоисключающих #define
в исходном файле C ++, и я экспериментирую с каждым из них. Поскольку я ленивый, я хотел бы сделать это автоматизированным процессом, и вот я застрял.
Иногда бывает, что оболочка говорит:
`make: Nothing to be done for 'all'`
Теперь я попытался diff
файл до и после каждой инструкции perl
, и файлы отображаются правильно ... Я не могу понять, почему это происходит и как заставить его вести себя правильно.
Есть идеи?
Заранее спасибо.