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 sed
saya 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 sed
di Linux, tetapi FreeBSD sed
mengharapkan argumen pertama setelah -i
opsi menjadi ekstensi untuk salinan cadangan. Ini akan terlihat seperti:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Namun, GNU sed
pada 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