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 sedje 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 sedsous Linux, mais FreeBSD seds'attend à ce que le premier argument après l' -ioption soit l'extension de la copie de sauvegarde. Voici à quoi cela ressemblerait:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Cependant, GNU seds'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