Saya sedang menulis skrip shell untuk server saya, yang merupakan hosting bersama yang menjalankan FreeBSD. Saya juga ingin dapat mengujinya secara lokal, di PC saya yang menjalankan Linux. Oleh karena itu, saya mencoba menulisnya dengan cara yang portabel, tetapi dengan sedsaya tidak melihat cara untuk melakukannya.
Bagian dari situs web saya menggunakan file HTML statis yang dihasilkan, dan baris sed ini menyisipkan DOCTYPE yang benar setelah setiap regenerasi:
sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Ini bekerja dengan GNU seddi Linux, tetapi FreeBSD sedmengharapkan argumen pertama setelah -iopsi menjadi ekstensi untuk salinan cadangan. Ini akan terlihat seperti:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Namun, GNU sedpada gilirannya mengharapkan ekspresi mengikuti segera setelahnya -i. (Ini juga membutuhkan perbaikan dengan penanganan baris baru, tapi itu sudah dijawab di sini )
Tentu saja saya dapat memasukkan perubahan ini dalam salinan server saya dari skrip, tetapi itu akan mengacaukan yaitu penggunaan VCS untuk versi. Apakah ada cara untuk mencapai ini dengan sed dalam cara yang sepenuhnya portabel?
-i