at 6:20 AM

Variabel Variabels dengan Bash / Shell Script

Istilah Variabel variabels pertama kali saya dengar di PHP(saya pernah bikin tutorial tentang ini disini), arti kalimat ini kurang lebih seperti ini, nilai sebuah variabel, dimana nilai tersebut juga merupakan sebuah variabel. Bingung ya, sama berarti saya juga bingung, tapi memang seperti itulah adanya, saya sendiri juga kebingungan ketika pertama kali memahaminya, namun dengan praktek hal ini menjadi lebih mudah dan cepat dimengerti, ya lebih baik langsung praktek dan analisa. Kali ini saya menggunakan Shell Script sebagai bahasa programmingnya.
Misalkan ada sebuah variabel seperti ini
satu="ini adalah nilai variabel satu"
Kemudian ada sebuah variabel lagi seperti ini
nilai="satu"
Jika melakukan perintah 
echo $nilai
Maka yang dicetak adalah "satu", Nah bagaimana menggunakan variabel nilai, tapi mencetak nilai variabel dari satu, jika menggunakan PHP seperti di postingan ini bisa dengan
echo $$nilai
Tapi di Shell Programming, bisa juga tapi menggunakan metode ini
echo ${!nilai}
perintah diatas akan mencetak nilai dari variabel satu, yaitu "ini adalah nilai variabel satu"

Pertanyaannya, buat apa metode seperti ini?
Sebenarnya banyak sekali kegunaanya diantaranya seperti kode berikut
x1="bulan ke BULAN tahun 2001"
x2="bulan ke BULAN tahun 2002"
x3="bulan ke BULAN tahun 2003"
Saya ingin mengambil nilai variabel x1, x2 dan x3 kemudian memprosesnya dalam sebuah looping yang sangat panjang, tentu jika menggunakan satu persatu ini akan membuat kode jadi lebih penjang, seperti ini
x1="bulan ke BULAN tahun 2001"
x2="bulan ke BULAN tahun 2002"
x3="bulan ke BULAN tahun 2003"
for x in {1..12}; do
     tmp=$(echo $x1 | sed -e s/BULAN/$x/ | sed -e s/tahun/TAHUN/ )
     echo $tmp
done
for x in {1..12}; do
     tmp=$(echo $x2 | sed -e s/BULAN/$x/ | sed -e s/nilai/TAHUN/ )
     echo $tmp
done
for x in {1..12}; do
     tmp=$(echo $x3 | sed -e s/BULAN/$x/ | sed -e s/nilai/TAHUN/ )
     echo $tmp
done
Hal kaya gini membuat kode jadi lebih panjang, apalagi nilai variabel utama seperti x1 itu sangat banyak. Dengan menggunakan variabel variabel kode diatas bisa dipersingkat menjadi seperti ini
x1="bulan ke BULAN tahun 2001"
x2="bulan ke BULAN tahun 2002"
x3="bulan ke BULAN tahun 2003"
for y in {1..3}; do
     yy="x$y"
     vv=${!yy}
     for x in {1..12}; do
          tmp=$(echo $vv | sed -e s/BULAN/$x/ | sed -e s/tahun/TAHUN/ )
          echo $tmp
     done
done

Terlihat kalo kode menjadi lebih singkat, apalagi jika variabel x1 tersebut mencapai 20 atau lebih kode akan menjadi sangat panjang.
Selain menggunakan metode diatas yaitu
${!namaVariabel}
bisa juga menggunakan metode ini
eval echo $`echo $namaVariabel`


/************** END ***************/

Tulis Komentar dengan akun Facebook Anda.

0 comments:

Post a Comment