Belajar Bash Script – Debugging
Hampir seluruh bahasa pemrograman menyertakan debugger tool untuk melakukan debugging. Dengan adanya debugger tool tersebut mempermudah kita untuk memeriksa dan mengetahui di mana letak kesalahan suatu aplikasi yang hendak atau sudah dibangun.
Bash
masuk dalam kategori shell scripting, berbeda dengan pemrograman, di shell scripting kita tidak memiliki semacam debugger tool. Meski demikian, kalau terjadi galat, secara asali ia akan tetap menampilkan di mana letak kesalahannya. Oleh karena itu, sebetulnya untuk proses debugging pada bash script tidaklah terlalu sulit.
Contoh pada skrip berikut:
#!/bin/bash echo "Nama Pengguna" echo "USER=$USER
Terlihat jelas bukan di mana letak kesalahannya? Ya tentu saja.
Jangan Dieksekusi
Dari tangkapan layar di atas, jika kita perhatikan echo "Nama Pengguna"
tetap dijalankan meskipun di bawahnya tertera terjadi suatu galat (error). Mungkin untuk perintah echo
tidaklah terlalu berpengaruh secara signifikan. Bagaimana jika perintah sebelumnya itu rm
yang mana berfungsi menghapus, akan tetap dijalankan? Secara asali, ya tentu saja. Dilihat dari contoh di atas meski galat skrip tetap dijalankan. Hal ini akan sangat berbahaya, oleh karena itu untuk memastikan skrip benar-benar tidak terjadi galat, kita gunakan perintah:
sh -n skrip_Anda
Perintah -n
berarti noexec
dengan kata lain skrip tidak dijalankan. Perhatikan tangkapan layar di bawah ini:
echo
tidak dijalankan dan galat tetap ditampilkan.
Tracing Script
Selain menggunakan perintah di atas, untuk proses debugging kita juga bisa menggunakan perintah -x
yang berarti tracing. Dengan kata lain, perintah ini memberitahukan kepada shell untuk meng-echo setiap perintah setelah melakukan langkah-langkah substitusi, dengan demikian kita dapat melihat nilai dari suatu variabel juga nilai dari suatu perintah.
Untuk lebih mudahnya, coba salin skrip di bawah ini:
#!/bin/bash name=$(cat /proc/cpuinfo | grep "model name" | cut -c 14- | head -1) cores=$(cat /proc/cpuinfo | grep "model name" | wc -l) echo "Procesor Name: $name" if [ $cores > 1 ] then echo "Cores: $cores" else echo "Core: $cores" fi
Kemudian jalankan dengan perintah:
sh -x debugging2
Hasilnya akan terlihat seperti gambar di bawah:
Kita lihat ada tanda +
dan ++
. Untuk +
artinya perintah dijalankan langsung, lalu ++
perintah ditampung dulu dalam sebuah variabel. Sedangakan yang tidak bertanda itu adalah output-nya.