我正在编写一个shell脚本,它遍历一组变量,根据当前迭代值逐行编辑源文件,然后重新制作,最后调用just编译二进制。执行后,旧线路被恢复。从bash脚本调用make不会使
这里是一个片段:
#!/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相互在C++源文件的独占#define
,并且我每个试验的影响。因为我很懒,所以我想让它成为一个自动化的过程,在这里我卡住了。
有时候碰巧壳说:
`make: Nothing to be done for 'all'`
现在,我试图diff
文件每perl
指令前,后和文件也显示正确的......我不明白为什么会这样以及如何使其行为正确。
有什么想法?
预先感谢您。
修正了,这个错误完全是我的。我添加了“睡眠”指令,但肯定是在错误的地方......只是把它放在循环的开始处(正如答案中所述),一切都很顺利。谢谢! – Daniele 2010-11-22 12:09:02
脚本的最后一个版本:我不想睡觉,我更愿意'touch -t 1010101010 $ {SOURCE} $ {OBJECT}'......浪费更少的时间! :) – Daniele 2010-11-22 15:01:48