Estou escrevendo scripts shell para o meu servidor, que é uma hospedagem compartilhada executando o FreeBSD. Também quero testá-los localmente, no meu PC executando o Linux. Por isso, estou tentando escrevê-los de maneira portátil, mas sed
não vejo como fazer isso.
Parte do meu site usa arquivos HTML estáticos gerados e essa linha sed insere DOCTYPE correto após cada regeneração:
sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Funciona com o GNU sed
no Linux, mas o FreeBSD sed
espera que o primeiro argumento após a -i
opção seja extensão para cópia de backup. É assim que ficaria:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
No entanto, o GNU, sed
por sua vez, espera que a expressão siga imediatamente depois -i
. (Também requer correções no tratamento da nova linha, mas isso já é respondido aqui )
É claro que posso incluir essa alteração na minha cópia do servidor do script, mas isso prejudicaria, ou seja, meu uso do VCS para controle de versão. Existe uma maneira de conseguir isso com o sed de uma maneira totalmente portátil?
-i