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
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
bisa juga menggunakan metode ini
/************** END ***************/
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 ***************/
0 comments:
Post a Comment