Bash脚本sed用法导致ZSH问题

淡绿色

我有一个Bash脚本,我可以使用它来引入多个存储库来创建项目工作流程的新实例,该实例根据命令行提供的信息执行许多字符串替换。

一位同事使用ZSH,并且遇到了似乎是由于sed在脚本中使用导致的问题具体来说,似乎不是在处理正则表达式吗?例如...

    # Author Name.
    if [[ $authorname ]]
    then
    sed -i "" "s/Author Name/$authorname/g" "$file"
    fi

导致以下错误:

sed: can't read "s/Author Name/$authorname/g" : No such file or directory

我们发现,通过添加-e标志,大多数字符串替换错误都会消失,但是他仍然遇到许多“未找到”错误...

sed: can't read : No such file or directory

有没有更好的方法来进行Bash和ZSH友好的字符串替换?

血红素

大概您正在使用GNU sed,它-i ""不像BSD那样采用类似的模式来编辑文件sed

来自man sed

-i [SUFFIX],-in-place [= SUFFIX]

您需要删除两者之间的空间:

sed -i"" "s/Author Name/$authorname/g" "$file"

或者,由于您不进行任何备份,只需执行以下操作:

sed -i "s/Author Name/$authorname/g" "$file"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章