这个bash脚本命令是什么意思(sed -e)?

时间:2014-05-21 12:35:45

标签: linux bash shell sed

我是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。

1 个答案:

答案 0 :(得分:1)

这个具体的命令将把所有c在行尾之前替换为o:

srcfill=abcd.c
objfil=`echo ${srcfil} | sed -e "s,c$,o,"`
echo $objfil

输出:

abcd.o

P.S。它使用不同的匹配/替换分隔符:默认为/,但它使用,