Estoy escribiendo scripts de shell para mi servidor, que es un alojamiento compartido que ejecuta FreeBSD. También quiero poder probarlos localmente, en mi PC con Linux. Por lo tanto, estoy tratando de escribirlos de forma portátil, pero sed
no veo forma de hacerlo.
Parte de mi sitio web utiliza archivos HTML estáticos generados, y esta línea de sed inserta DOCTYPE correcto después de cada regeneración:
sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Funciona con GNU sed
en Linux, pero FreeBSD sed
espera que el primer argumento después de la -i
opción sea una extensión para la copia de seguridad. Así es como se vería:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Sin embargo, GNU sed
a su vez espera que la expresión siga inmediatamente después -i
. (También requiere correcciones con el manejo de nueva línea, pero eso ya se respondió aquí )
Por supuesto, puedo incluir este cambio en la copia del script de mi servidor, pero eso podría causar problemas, es decir, mi uso de VCS para el control de versiones. ¿Hay alguna manera de lograr esto con sed de una manera totalmente portátil?
-i