我是bash脚本的新手,但我想解决这个问题.. 命令是:
objfil=`echo ${srcfil} | sed -e "s,c$,o,"`
关于bash脚本程序的想法是检查源文件,并检查OBJ目录中是否有相邻的目标文件,如果是,程序的其余部分运行顺利,如果没有,则迭代终止并且跳过当前的源文件,然后转到下一个..它与.c文件一起使用但不在标题上,因为对象文件名依赖于.c文件..我想写这个命令,所以它检查目标文件不仅仅是.c而是.h文件......但是没有跳过它们。我知道我还必须做其他事情,但我需要了解这一行命令究竟是什么才能继续前进。谢谢。 (对不起我的英文)
更新:
if test -r ${curOBJdir}/${objfil}
then
cp -v ${srcfil} ./SAVEDSRC/${srcfil}
fdone="NO"
linenums=ALL
else
fdone="YES"
err="${curOBJdir}/${objfil} is missing - ${srcfil} skipped)"
echo ${err}
echo ${err} >>${log}
fi
while test ${fdone} == "NO"
do
#rest of code ...
这是程序的其余部分..我试图评论"测试"部分忽略比较只是因为我只希望我的脚本工作.h文件,但没有检查例如abc.h文件有一个abc.o文件..(需要生成目标文件,因为脚本的结尾那里& #39;原始和修改过的目标文件的hexdump之间的比较)。整个脚本用于将typedef更改为基本类型,例如int到sint32_t。
答案 0 :(得分:1)
这个具体的命令将把所有c在行尾之前替换为o:
srcfill=abcd.c
objfil=`echo ${srcfil} | sed -e "s,c$,o,"`
echo $objfil
输出:
abcd.o
P.S。它使用不同的匹配/替换分隔符:默认为/
,但它使用,
。