Bash Makefile更新注释?

问题描述 投票:0回答:1

我需要制作一个shellscript来更新一个项目的C源代码文件中的注释,我还需要在Makefile中添加一个新的目标来更新Makefile中的版本号。我还需要在Makefile中添加一个新的目标,以便更新Makefile本身的版本号。我会收到一个(未知名称)的压缩文件,里面会有几个文件(命名为:calcmarks.h、calcmarks.c、correlation.c、globals.c、readmarks.c)。这是我目前所拥有的文件,但我对如何使之工作感到非常困惑。

unzip $1 
for file in calcmarks.h calcmarks.c correlation.c globals.c readmarks.c  
do                                                                                                                 
e=`grep -oP '(?<= version )[0-9]+' file`                                                                             
let f=$e+1                                                                                                           
sed "s/version $e,/version $f, /" file  | sed "s/released.*/released $(date)/" > file                                
done      

我以为我的shellscript会解压这个文件夹,然后对每个文件都会找到注释,用更新的版本号替换版本号,然后用当前日期替换旧日期,但它不起作用。我也不知道如何在Makefile中做一个新的目标来更新Makefile本身的注释。谢谢你!我需要制作一个shellscript来更新Makefile中的注释。

c bash makefile
1个回答
2
投票

问题是在行

sed "s/version $e,/version $f, /" file  | sed "s/released.*/released $(date)/" > file

因为你是从你要写的同一个文件中读取的。由于重定向的原因,你在开始读的同时,也在清空文件,写新的内容。

这可以解决这个问题。

mv file file.bak
sed "s/version $e,/version $f, /" file.bak  | sed "s/released.*/released $(date)/" > file
rm file.bak

但这样会更干净

sed -i "s/version $e,/version $f, /; s/released.*/released $(date)/" file
© www.soinside.com 2019 - 2024. All rights reserved.