Saya sudah mencoba untuk menulis skrip bash sederhana yang akan saya gunakan untuk menginstal aplikasi dan memperbarui file konfigurasi itu. Saya mengalami kesulitan untuk mendapatkan file konfigurasi itu dimodifikasi.
# DBHost=localhost
DBName=test
# DBPassword=
ada saran bagaimana saya bisa mendapatkan modifikasi di atas seperti di bawah ini?
DBHost=localhost
DBName=database
DBPassword=password
bash
shell-script
text-processing
configuration
compixtr
sumber
sumber
Jawaban:
Cara terbaik tergantung pada apakah Anda mengharapkan file juga dimodifikasi oleh manusia, seberapa kompleks file itu, dan apakah Anda ingin skrip Anda diutamakan jika terlihat seperti orang lain menginginkan nilai yang berbeda. Artinya, jika file sudah berisi
DBPassword=swordfish
, apakah Anda ingin menyimpannya, atau menggantinya denganDBPassword=password
?Cara yang umum untuk menangani ini adalah memiliki bagian file yang dibatasi oleh "komentar ajaib", dan hanya mengedit bagian di antara komentar ini. Inilah cara untuk melakukan ini dengan awk. Jika komentar ajaib tidak ada, bagian baru ditambahkan di akhir file. Peringatan: kode yang belum diuji.
Pendekatan ini tidak berfungsi dengan baik jika program yang membaca file konfigurasi tidak mendukung banyak baris pengaturan item konfigurasi yang sama. Dalam hal ini, Anda benar-benar harus menghapus yang lama. Dalam hal ini saya akan menyarankan agar komentar tidak tersentuh dan menambahkan pengaturan Anda sendiri di akhir.
sumber
Jika itu yang Anda butuhkan, Anda bisa melakukan sesuatu seperti
Ini akan menyalin asli
config.file
keconfig.file.bak
dan membuat perubahan yang diperlukan.sumber
Saya akan menggunakan "ex" dalam mode diam:
Perintah terdon
sed
adalah kompak dan efisien. Tetapi interaksi "dokumen di sini" penuh dengan perintah ex dan interpolasi shell string bisa menjadi kuat. Misalnya, kata sandi dapat diganti sebagai nilai variabel shell:Jika Anda menggunakan
vi
atauvim
dan Anda terbiasa dengan mode ':', menambahkan suntingan baru / lebih baik / berbeda juga cukup mudah.sumber