Bash parameter expansions adalah fitur canggih yang memudahkan manipulasi string dan variabel dalam skrip shell. Fitur ini mengubah sintaks Bash menjadi nilai aktual saat runtime tanpa perlu memanggil alat eksternal. Dengan parameter expansions, Anda bisa melakukan perubahan string, mengatur nilai default variabel, serta mengganti atau menghapus bagian tertentu dari string secara efisien.
Mengubah Huruf Besar dan Kecil pada String
Bash menyediakan cara cepat untuk mengubah kapitalisasi string. Misalnya, menggunakan ${var^^} akan mengubah seluruh string menjadi huruf besar. Sebaliknya, ${var,,} mengubah seluruh string menjadi huruf kecil. Variasi lain seperti ${var^} hanya mengubah huruf pertama menjadi kapital, sedangkan ${var,} mengubah huruf pertama menjadi kecil. Teknik ini sangat berguna saat mengatur nama file atau data input, contohnya untuk mengubah nama file dari huruf besar menjadi huruf kecil semua:
bash
for file in IMG_*.jpg; do mv "$file" "${file,,}"; done
Cara ini juga efektif untuk memproses data seperti daftar alamat MAC agar konsisten menggunakan huruf kapital:
bash
while read mac; do echo "${mac^^}"; done < mac_addresses.txt > mac_addresses_upper.txt
Menggunakan Nilai Default pada Variabel
Sering kali dalam skrip, variabel belum diatur atau kosong. Agar skrip tidak error, Anda bisa menggunakan parameter expansions untuk memberikan nilai default. Sintaks ${VAR:-default} akan memakai nilai default jika VAR tidak di-set atau kosong. Contoh:
bash
echo "${NAME:-Guest}"
Ada juga variasi lain:
${VAR-value}— nilai default jika variabel tidak di-set${VAR:+value}— mengeluarkanvaluejika variabel di-set dan tidak kosong${VAR+value}— mengeluarkanvaluejika variabel di-set, walau kosong${VAR:=value}— menetapkan dan mengeluarkanvaluejika variabel kosong atau tidak di-set${VAR=value}— menetapkan dan mengeluarkanvaluejika variabel tidak di-set
Contohnya jika Anda ingin memastikan variabel XDG_CONFIG_HOME diatur dengan nilai default saat digunakan:
bash
mv foo.conf "${XDG_CONFIG_HOME:-$HOME/.config}"
Dan untuk mengatur variabel tersebut sekaligus:
bash
mv foo.conf "${XDG_CONFIG_HOME:=$HOME/.config}"
mv bar.conf "$XDG_CONFIG_HOME"
Metode ini mempercepat skrip tanpa repot pengecekan kondisi manual.
Mengganti dan Menghapus Bagian String
Parameter expansions juga mampu mengganti sebagian string dengan mudah. Sintaks sederhana untuk mengganti kemunculan pertama sebuah pola adalah ${var/pattern/replacement}. Untuk mengganti semua kemunculan, gunakan ${var//pattern/replacement}. Contoh mengganti kata "World" menjadi "Universe":
bash
text="Hello, World!"
echo "${text/World/Universe}"
Kamu juga bisa mengganti teks di awal atau akhir string dengan /# dan /%:
bash
echo "${text/#Hello/Hi}"
echo "${text/%World!/Universe!}"
Untuk menghapus bagian string, gunakan operator # dan %. # menghapus pola terpendek dari kiri, sedangkan ## menghapus pola terpanjang dari kiri. Sebaliknya, % dan %% bekerja dari kanan:
bash
file="archive.tar.gz"
echo "${file%.}" # Hasil: archive.tar (hapus ekstensi terakhir)
echo "${file%%.}" # Hasil: archive (hapus semua setelah titik pertama)
echo "${file##*.}" # Hasil: gz (ambil ekstensi terakhir)
Operator ini berguna untuk manipulasi file dan path dengan ekstensif, seperti mendapatkan nama file atau mengubah ekstensi.
Penerapan Parameter Expansions dalam Script
Parameter expansions sangat berguna dalam skrip harian, mengurangi kebutuhan panggilan alat eksternal seperti sed atau banyak IF statement. Anda bisa menggabungkan ekspansi ini untuk handling variabel serta string secara fleksibel:
bash
echo "${FOO:-${BAR:-default}}"
Kode di atas akan memakai default jika FOO dan BAR keduanya tidak di-set. Namun, ingat untuk tidak terlalu dalam menanam ekspansi agar tetap mudah dibaca. Kadang struktur IF lebih jelas meski sedikit lebih panjang.
Parameter expansions adalah alat yang wajib dikuasai pengembang dan administrator sistem Linux. Dengan pemahaman ini, Anda bisa menulis skrip yang lebih efisien, rapi, dan mudah dipelihara tanpa ketergantungan pada program tambahan. Jadi, jangan ragu mencoba fitur-fitur ini untuk berbagai kebutuhan manipulasi string dan variabel di Bash.
