7
如何使用sed -i(就地编辑)实现可移植性?
我正在为服务器编写Shell脚本,该服务器是运行FreeBSD的共享主机。我还希望能够在运行Linux的PC上本地测试它们。因此,我试图以一种可移植的方式编写它们,但是sed我看不到这样做的方法。 我的网站的一部分使用了生成的静态HTML文件,此sed行在每次重新生成后插入正确的DOCTYPE: sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html} 它sed在Linux上可以与GNU一起使用,但是FreeBSD sed希望-ioption 后的第一个参数是备份副本的扩展名。它是这样的: sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html} 但是,GNU sed依次期望表达式在之后-i。(它也需要使用换行符进行修复,但这已在此处得到解答) 当然,我可以将此更改包含在脚本的服务器副本中,但这会很混乱,即我使用VCS进行版本控制。有没有办法以完全可移植的方式使用sed实现此目的?