Saya menulis skrip shell dengan beberapa variabel yang harus dikonfigurasi oleh pengguna. Akan ada penginstal untuk mengunduh dan mengonfigurasi skrip, mungkin dengan mengajukan serangkaian pertanyaan. Skrip yang dimaksud ditujukan untuk pengembang lain.
Ini dapat diimplementasikan dalam beberapa cara:
Gunakan placeholder dalam skrip itu sendiri dan gunakan
sed
untuk menggantikan mereka selama instalasi (sesuatu seperti ini: /programming/415677/how-to-replace-placeholder-in-a-text-file )Pro: Semua definisi variabel terkandung dalam skrip. Sangat mudah untuk mengunduh skrip secara manual dan mengonfigurasi variabel untuk pengguna yang lebih memilih editor daripada installer.
Cons: Sulit untuk mengkonfigurasi ulang variabel melalui installer setelah mereka berada di tempat. Kecuali saya membuat regexp yang lebih kompleks yang akan rentan terhadap kesalahan.
Gunakan file config , pada dasarnya skrip shell lain dengan tugas, dan gunakan
source
untuk memasukkannya. (Dan mungkin letakkan di~/.scriptname
? Script utama disalin ke/usr/local/bin
)Pro: Sangat mudah untuk mengkonfigurasi ulang skrip. Bahkan dapat menambahkan parameter untuk melakukannya dari skrip utama (Mungkin akan bekerja di solusi pertama juga, tetapi mengedit skrip dari itu sendiri tidak terdengar seperti ide yang sangat bagus)
Cons: Script sekarang tergantung pada dua file dan pengguna diharuskan untuk menjalankan installer untuk file konfigurasi yang akan dibuat. Ini dapat diselesaikan dengan membuat file konfigurasi secara otomatis jika tidak ada. Tetapi menemukan file konfigurasi eksternal masih akan lebih rumit bagi pengguna yang hanya ingin mengunduh skrip, mengeditnya, dan selesai dengan itu.
Juga, beberapa opsi mengenai bagaimana konfigurasi harus dikelola oleh pengguna setelah instalasi:
Git seperti
$ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / webInteraktif
$ myscript config
Masukkan nama host server: example.org
Masukkan path ke proxy di server: / home / johndoe / proxy
Masukkan path ke direktori http di server: / home / johndoe / webgetopts dengan opsi panjang
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / webSederhana
$ myscript config example.org / home / johndoe / proxy / home / johndoe / web
Apakah ada cara lain untuk melakukan ini yang akan Anda pertimbangkan?
Adakah praktik terbaik, sesuatu yang elegan?