J'écris des scripts shell pour mon serveur, qui est un hébergement partagé sous FreeBSD. Je veux aussi pouvoir les tester localement, sur mon PC sous Linux. Par conséquent, j'essaie de les écrire de manière portable, mais sed
je ne vois aucun moyen de le faire.
Une partie de mon site Web utilise des fichiers HTML statiques générés, et cette ligne sed insère le DOCTYPE correct après chaque régénération:
sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Cela fonctionne avec GNU sed
sous Linux, mais FreeBSD sed
s'attend à ce que le premier argument après l' -i
option soit l'extension de la copie de sauvegarde. Voici à quoi cela ressemblerait:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Cependant, GNU sed
s'attend à ce que l'expression suive immédiatement après -i
. (Cela nécessite également des correctifs avec la gestion des nouvelles lignes, mais cela a déjà été résolu ici )
Bien sûr, je peux inclure ce changement dans la copie du script que je suis sur le serveur, mais cela gâcherait mon utilisation de VCS pour la gestion des versions. Existe-t-il un moyen d'y parvenir avec sed de manière totalement portable?
-i