我有一个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] 删除。
我来说两句