2.
Dasar-dasae Shell Programming
Sebelum Melangkah
ketingkat yang lebih tinggi alangkah indah jika kita mengetahui
tentang perintah dasar yang terdapat pada shell programming
seperti :
cd,
pwd, times, alias, umask, exit, logout, fg, bg, ls, mkdir, rmdir, mv,
cp, rm, clear, ...
utilitas seperti cat, cut, paste, chmod,
lpr,...
redirection (cara mengirim output ke file atau
menerima input dari file), menggunakan operator redirect >, >>,
<, <<, contohnya:
ls >
data
hasil ls dikirim ke file data, jika file belum ada akan
dibuat tetapi jika sudah ada isinya akan ditimpa.
ls >>
data
hampir sama, bedanya jika file sudah ada maka isinya akan
ditambah di akhir file.
cat < data
file data dijadikan input
oleh perintah cat
pipa (output suatu perintah menjadi input
perintah lain), operatornya : | , contoh:
ls -l | sort -s
ouput
perintah ls -l (long) menjadi input perintah sort -s (urutkan secara
descending), mending pake ls -l -r saja :-)
ls -l | sort -s |
more
cat <data | sort > databaru
Wildcard dengan karakter
*, ?, [ ], contohnya:
ls i*
tampilkan semua file yang dimulai
dengan i
ls i?i
tampilkan file yang dimulai dengan i, kemudian
sembarang karakter tunggal, dan diakhiri dengan i
ls
[ab]*
tampilkan file yang dimulai dengan salah satu karakter a
atau b
3.
Variabel Pada Shell
Environment
Variable
atau variabel lingkungan yang digunakan khusus oleh shell
atau system linux kita untuk proses kerja system seperti variabel
PS1, PS2, HOME, PATH, USER, SHELL,dsb...jika digunakan akan berdampak
pada system, misalkan variabel PS1 yang digunakan untuk mengeset
prompt shell pertama yaitu prompt tempat anda mengetikkan perintah -
perintah shell (defaultnya "\s-\v\$"), PS2 untuk prompt
pelengkap perintah, prompt ini akan ditampilkan jika perintah yang
dimasukkan dianggap belum lengkap oleh shell (defaultnya ">").
anda dapat mengeset PS1 dan PS2 seperti berikut.
simpan dahulu isi
PS1 asli system anda, sehingga nanti dapat dengan mudah
dikembalikan
[root@ewa$]PS1LAMA=$PS1
sekarang masukkan string
yang diinginkan pada variabel PS1
[root@ewa$]PS1="Hi ini
Promptku!"
Hi ini Promptku!PS2="Lengkapi dong ? "
maka
prompt pertama dan kedua akan berubah, untuk mengembalikan PS1 anda
ke prompt semula ketikkan perintah
[root@ewa$]PS1=$PS1LAMA
Jika
anda ingin mengkonfigurasi prompt shell, bash telah menyediakan
beberapa backslash karakter diantaranya adalah:\a
ASCII bell character (07)
\d date dengan format
"Weekday Month Date" (misalnya "Tue May 26")
\e
ASCII escape character (033)
\H hostname
(namahost)
\n newline (karakter baru)
\w
Direktory aktif
\t time dalam 24 jam dengan
format HH:MM:SS
dll man bash:-)
contoh
pemakaiannya:
[root@ewa$]PS1="[\t][\u@\h:\w]\$"
agar
prompt shell hasil konfigurasi anda dapat tetap berlaku (permanen)
sisipkan pada file .bashrc atau .profile
2.
Positional Parameter
atau parameter posisi yaitu variabel
yang digunakan shell untuk menampung argumen yang diberikan terhadap
shell baik berupa argumen waktu sebuah file dijalankan atau argumen
yang dikirim ke subrutin. variabel yang dimaksud adalah
1,2,3,dst..lebih jelasnya lihat contoh script berikut
:
#!/bin/bash
#argumen1
echo $1 adalah salah satu $2
populer di $3
Hasilnya
[root@ewa$]./argumen1 bash shell
linux
bash adalah salah satu shell populer di linux
ada 3
argumen yang disertakan pada script argumen1 yaitu bash, shell,
linux, masing2 argumen akan disimpan pada variabel 1,2,3 sesuai
posisinya. variabel spesial lain yang dapat digunakan diperlihatkan
pada script berikut:
#!/bin/bash
#argumen2
clear
echo
"Nama script anda : $0";
echo "Banyak argumen
: $#";
echo "Argumennya adalah:
$*";
Hasilnya:
[root@ewa$]./argumen 1 2 3 empat
Nama
script anda : ./argumen
Banyak argumen :
4
Argumennya adalah : 1 2 3 empat
3. User
Defined Variable
atau variabel yang didefinisikan sendiri
oleh pembuat script sesuai dengan kebutuhannya, beberapa hal yang
perlu diperhatikan dalam mendefenisikan variabel adalah:
dimulai
dengan huruf atau underscore
hindari pemakaian spesial karakter
seperti *,$,#,dll...
bash bersifat case sensitive, maksudnya
membedakan huruf besar dan kecil, a berbeda dengan A, nama berbeda
dengan Nama,NaMa,dsb..
untuk mengeset nilai variabel gunakan
operator assignment (pemberi nilai)"=", contohnya
:
myos="linux"
#double-quoted
nama='pinguin'
#single-quoted
hasil=`ls -l`;
#back-quoted
angka=12
kalau anda perhatikan ada 3 tanda kutip
yang kita gunakan untuk memberikan nilai string ke suatu variabel,
adapun perbedaannya adalah:
dengan kutip ganda (double-quoted),
bash mengizinkan kita untuk menyisipkan variabel di dalamnya.
contohnya:
#!/bin/bash
nama="pinguin"
kata="Hi
$nama, apa khabarmu" #menyisipkan variabel
nama
echo $kata;
Hasilnya:
Hi pinguin, apa khabarmu
dengan
kutip tunggal (single-quoted), akan ditampilkan apa adanya.
contohnya:
#!/bin/bash
nama="pinguin"
kata='Hi
$nama, apa khabarmu' #menyisipkan variabel
nama
echo $kata;
Hasilnya:
Hi $nama, apa khabarmu
dengan
kutip terbalik (double-quoted), bash menerjemahkan sebagai perintah
yang akan dieksekusi, contohnya:
#!/bin/bash
hapus=`clear`;
isi=`ls
-l`; #hasil dari perintah
ls -l disimpan di variabel isi
#hapus layar
echo
$hapus
#ls -l
echo $isi;
Hasilnya: silahkan dicoba sendiri
Untuk lebih jelasnya lihat
contoh
berikut:
#!/bin/bash
#varuse
nama="ewa"
OS='linux'
distro="macam-macam,
bisa slackware,redhat,mandrake,debian,suse,dll"
pc=1
hasil=`ls
-l $0`
clear
echo -e "Hi $nama,\npake $OS\nDistribusi,
$distro\nkomputernya, $pc buah"
echo "Hasil ls -l $0
adalah =$hasil"
Hasilnya:
[root@ewa$]./varuse
Hi
ewa,
pake linux Distribusi, macam-macam, bisa
slackware,redhat,mandrake,debian,suse,dll
komputernya, 1
buah
Hasil ls -l ./varuse adalah -rwxr-xr-x 1 fajar users 299 Nov
21 06:24 ./varuse
untuk operasi matematika ada 3 cara yang dapat
anda gunakan, dengan statement builtin let atau expr atau perintah
subtitusi seperti contoh
berikut:
#!/bin/bash
#mat1
a=10
b=5
#memakai
let
let jumlah=$a+$b
let kurang=$a-$b
let
kali=$a*$b
#memakai expr
bagi=`expr $a / $b`
#memakai
perintah subtitusi $((ekspresi))
modul =$(($a%$b)) #sisa
pembagian
echo "$a+$b=$jumlah"
echo
"$a-$b=$kurang"
echo "$a*$b=$kali"
echo
"$a/$b=$bagi"
echo
"$a%$b=$mod"
Hasilnya:
[root@ewa$]./mat1
10+5=15
10-5=5
10*5=50
10/5=2
10%5=0
fungsi
expr begitu berdaya guna baik untuk operasi matematika ataupun string
contohnya:
[root@ewa$]mystr="linux"
[root@ewa$]expr
length $mystr
5
Mungkin anda bertanya - tanya, apakah bisa
variabel yang akan digunakan dideklarasikan secara eksplisit dengan
tipe data tertentu?, mungkin seperti C atau pascal, untuk hal ini
oleh Bash disediakan statement declare dengan opsi -i hanya untuk
data integer (bilangan bulat). Contohnya:
#!/bin/bash
declare
-i angka
angka=100;
echo $angka;
apabila variabel yang
dideklarasikan menggunakan declare -i ternyata anda beri nilai string
(karakter), maka Bash akan mengubahnya ke nilai 0, tetapi jika anda
tidak menggunakannya maka dianggap sebagai string.
4.
Input dan Output pada shell
1.
Output dengan
printf
#!/bin/bash
#pr1
url="pemula.linux.or.id";
angka=32;
printf
"Hi, Pake printf ala C\n\t\a di bash\n";
printf "My
url %s\n %d decimal = %o octal\n" $url $angka $angka;
printf
"%d decimal dalam float = %.2f\n" $angka
$angka
Hasilnya:
[root@ewa$]./pr1
Hi, Pake printf ala C
di bash
My url pemula.linux.or.id
32 decimal = 40
octal
32 decimal dalam float = 32.00
untuk menggunakan format
kontrol sertakan simbol %, bash akan mensubtitusikan format tsb
dengan isi variabel yang berada di posisi kanan sesuai dengan
urutannya jika lebih dari satu variabel, \n \t \aadalah karakter
sekuen lepas newline,tab, dan bell,Format control
keterangan
%d untuk format data integer
%o
octal
%f float atau decimal
%x
Hexadecimal
pada script diatas %.2f akan mencetak 2 angka
dibelakang koma, defaultnya 6 angka, informasi lebih lanjut dapat
dilihat via man printf
2. Input dengan
read
Setelah echo dan printf untuk proses output telah anda
ketahui, sekarang kita menggunakan statement read yang cukup ampuh
untuk membaca atau menerima masukan dari input standar
syntax
:
read -opsi [nama_variabel...]
berikut contoh
scriptnya:
#!/bin/bash
#rd1
echo -n "Nama anda
:"
read nama;
echo "Hi $nama,
apa khabarmu";
echo "Pesan dan kesan
:";
read
echo "kata $nama,
$REPLY";
Hasilnya:
[root@ewa$]./rd1
Nama anda :
pinguin
Hi pinguin, apa khabarmu
Pesan & kesan :
pake
linux pasti asyk - asyk aja
kata pinguin, pake linux pasti asyk -
asyk aja
jika nama_variabel tidak disertakan, maka data yang
diinput akan disimpan di variabel REPLY contoh lain read menggunakan
opsi
-t(TIMEOUT), -p (PROMPT), -s(SILENT), -n (NCHAR) dan
-d(DELIM)
#!/bin/bash
read -p "User Name : "
user
echo -e "Password 10 karakter,\njika dalam 6 second
tidak dimasukkan pengisian password diakhiri"
read -s -n 10
-t 6 pass
echo "kesan anda selama pake
linux, _underscore=>selesai"
read -d _ kesan
echo
"User = $user"
echo "Password =
$pass"
echo "Kesan selama pake linux =
$kesan"
Hasilnya: silahkan dicoba sendiri :-)Opsi
Keterangan
-p memungkinkan kita membuat prompt
sebagai informasi pengisian
-s membuat input
yang dimasukkan tidak di echo ke layar (seperti layaknya password di
linux)
-n menentukan banyak karakter yang
diinput
-d menentukan karakter pembatas
masukan
informasi secara lengkap lihat man bash
3.
Output dengan konstanta ANSIPengaturan Warna
Untuk
pewarnaan tampilan dilayar anda dapat menggunakan konstanta ANSI
(salah satu badan nasional amerika yang mengurus
standarisasi).
syntaxnya:
\033[warnam
Dimana:
m
menandakan setting color
contohnya:
[root@ewa$]echo
-e "\033[31m HELLO\033[0m"
HELLO
konstanta 31m adalah
warna merah dan 0m untuk mengembalikan ke warna normal (none),
tentunya konstanta warna ansi ini dapat dimasukkan ke variabel PS1
untuk mengatur tampilan prompt shell anda,
contohnya:
[root@ewa$]PS1="\033[34m"
[root@ewa$]
berikut
daftar warna yang dapat anda gunakan:
foreground
None 0m
Black 0;30
Dark Gray 1;30
Red 0;31
Light Red 1;31
Green 0;32
Light Green 1;32
Brown 0;33
Yellow 1;33
Blue 0;34
Light Blue 1;34
Purple 0;35
Light Purple 1;35
Cyan 0;36
Light Cyan 1;36
Light Gray 0;37 White
1;37
background
dimulai
dengan 40 untuk BLACK,41 RED,dst
lain-lain
4 underscore,5 blink, 7 inverse
tentunya untuk mendapatkan
tampilan yang menarik anda dapat menggabungkannya antara foreground
dan background
[root@ewa$]echo -e "\033[31;1;33m Bash and
ansi color\033[0m"
5.
Struktur kontrol pada shell
Seleksi
1.
if
Statement builtin if berfungsi untuk melakukan seleksi
berdasarkan suatu kondisi tertentu
syntax:
if test-command1;
then
perintah1;
elif test-command2;
then
perintah2;
else
alternatif_perintah;
fi
contoh script
if1:
#!/bin/bash
#if1
clear;
if [ $# -lt 1 ];
then
echo "Usage : $0 [arg1 arg2
...]"
exit 1;
fi
echo
"Nama script anda : $0";
echo "Banyak argumen
: $#";
echo "Argumennya adalah:
$*";
Hasilnya:
[root@ewa$]./if1
Usage : ./if1 [arg1
arg2 ...]
statement dalam blok if...fi akan dieksekusi apabila
kondisi if terpenuhi, dalam hal ini jika script if1 dijalankan tanpa
argumen. kita tinggal membaca apakah variabel $# lebih kecil (less
than) dari 1, jika ya maka eksekusi perintah di dalam blok if ..fi
tsb. perintah exit 1 akan mengakhiri jalannya script, angka 1 pada
exit adalah status yang menandakan terdapat kesalahan, status 0
berarti sukses, anda dapat melihat isi variabel $? yang menyimpan
nilai status exit, tetapi jika anda memasukkan satu atau lebih
argumen maka blok if...fi tidak akan dieksekusi, statement diluar
blok if..filah yang akan dieksekusi.
contoh script
if2:
#!/bin/bash
kunci="bash";
read -s -p
"Password anda : " pass
if [ $pass==$kunci ]; then
echo "Sukses, anda layak dapat linux"
else
echo "Wah sorry, gagal
nih";
fi
Hasilnya
[root@ewa$]./if2
Password anda :
bash
Sukses, anda layak dapat linux
[root@ewa$]./if2
Password
anda : Bash
Wah sorry, gagal nih
klausa else akan dieksekusi
jika if tidak terpenuhi, sebaliknya jika if terpenuhi maka else tidak
akan dieksekusi
contoh script if3: penyeleksian dengan kondisi
majemuk
#!/bin/bash
clear
echo "MENU HARI
INI";
echo "-------------";
echo "1.
Bakso ";
echo "2. Gado-Gado
";
echo "3. Exit ";
read
-p "Pilihan anda [1-3] :" pil;
if [ $pil -eq 1 ];
then
echo "Banyak mangkuk =";
read jum
let bayar=jum*1500;
elif [ $angka -eq 2
];
then
echo "Banyak porsi =";
read jum
let bayar=jum*2000;
elif [ $angka -eq 3
];
then
exit 0
else
echo
"Sorry, tidak tersedia"
exit 1
fi
echo
"Harga bayar = Rp. $bayar"
echo
"THX"
Hasilnya:
[root@ewa$]./if3
MENU HARI
INI
-------------
1. Bakso
2. Gado-Gado
3. Exit
Pilihan anda :2
Banyak porsi
= 2
Harga bayar = Rp. 4000
THX
2.
statement builtin caseseperti halnya if statement case
digunakan untuk menyeleksi kondisi majemuk, dibanding if, pemakaian
case terasa lebih efisien
syntax:
case WORD in [ [(] PATTERN [|
PATTERN]...) COMMAND-LIST ;;]...
esac
contoh script
cs1
#!/bin/bash
clear
echo -n "Masukkan nama
binatang :";
read binatang;
case $binatang in
pinguin | ayam | burung ) echo "$binatang berkaki
2"
break
;;
onta | kuda | anjing ) echo "$binatang
berkaki 4"
break
;;
*) echo "$binatang blom
didaftarkan"
break
;;
esac
Hasilnya:
[root@ewa$]./cs1
Masukkan nama binatang
: pinguin
pinguin berkaki 2
2. Perulangan
1. statement
for
syntax:
for NAME [in WORDS ...]; do perintah; done
contoh
script for1
#!/bin/bash
for angka in 1 2 3 4 5;
do
echo
"angka=$angka";
done
Hasilnya:
[root@ewa$]./for1
angka=1
angka=2
angka=3
angka=4
angka=5
contoh
script for2 berikut akan membaca argumen yang disertakan waktu script
dijalankan
#!/bin/bash
for var
do
echo
$var
done
Hasilnya:
[root@ewa$]./for2 satu 2
tiga
satu
2
tiga
atau variasi seperti
berikut
#!/bin/bash
for var in `cat /etc/passwd`
do
echo $var
done
Hasilnya: hasil dari perintah cat terhadap file
/etc/passwd disimpan ke var dan ditampilkan menggunakan echo $var ke
layar, mendingan gunakan cat /etc/passwd saja biar efisien. :-)
3.
statement while
selama kondisi bernilai benar atau zero
perintah dalam blok while akan diulang terus
syntax:
while
KONDISI; do perintah; done;
contoh script wh1 mencetak bilangan
ganjil antara 1-10
#!/bin/bash
i=1;
while [ $i -le 10
];
do
echo "$i,";
let
i=$i+2;
done
Hasilnya:
[root@ewa$]./wh1
1,3,5,7,9,
kondisi
tidak terpenuhi pada saat nilai i=11 (9+2), sehingga perintah dalam
blokwhile tidak dieksekusi lagi
contoh script wh2 akan menghitung
banyak bilangan genap dan ganjil yang
ada.
#!/bin/bash
i=0;
bil_genap=0;
bil_ganjil=0;
echo
-n "Batas loop :";
read batas
if [ -z $batas ] ||
[ $batas -lt 0 ]; then
echo "Ops, tidak boleh kosong
atau Batas loop harus >= 0";
exit
0;
fi
while [ $i -le $batas ];
do
echo -n "$i,";
if [ `expr $i %
2` -eq 0 ]; then
let
bil_genap=$bil_genap+1;
else
let bil_ganjil=$bil_ganjil+1;
fi
let i=$i+1; #counter untuk mencapai
batas
done
echo
echo "banyak bilangan genap
= $bil_genap";
echo "banyak bilangan ganjil =
$bil_ganjil";
Hasilnya:
[root@ewa$]./wh2
Batas loop :
10
0,1,2,3,4,5,6,7,8,9,10,
banyak bilangan genap =
6
banyak bilangan ganjil = 5
untuk mengetahui apakah nilai i
berupa bilangan genap kita cukup menggunakan operasi matematika %
(mod), jika nilai i dibagi 2 menghasilkan sisa 0 berarti i adalah
bilangan genap (semua bilangan genap yang dibagi dengan 2 mempunyai
sisa 0) maka pencacah (bil_genap) dinaikkan 1, selain itu i bilangan
ganjil yang dicatat oleh pencacah bil_ganjilproses ini dilakukan
terus selama nilai i lebih kecil atau samadengan nilai batas yang
dimasukkan. script juga akan memeriksa dahulu nilai batas yang
dimasukkan apabila kosong atau lebih kecil dari 0 maka proses segera
berakhir.tentunya dengan statement while kita sudah dapat membuat
perulangan pada script kedai diatas agar dapat digunakan
terus-menerus selama operator masih ingin melakukan proses
perhitungan. lihat contoh
berikut:
#!/bin/bash
#kedai
lagi='y'
while [
$lagi == 'y' ] || [ $lagi == 'Y' ];
do
clear
echo "MENU HARI INI";
echo
"-------------";
echo "1. Bakso
";
echo "2. Gado-Gado ";
echo "3. Exit ";
read -p "Pilihan anda [1-3] :" pil;
if [ $pil -eq 1
];
then
echo -n "Banyak mangkuk =";
read jum
let bayar=jum*1500;
elif [ $pil -eq 2
];
then
echo -n "Banyak porsi =";
read jum
let bayar=jum*2000;
elif [ $pil -eq 3
];
then
exit 0
else
echo
"Sorry, tidak tersedia"
exit 1
fi
echo
"Harga bayar = Rp. $bayar"
echo "THX"
echo
echo -n "Hitung lagi (y/t) :";
read lagi;
#untuk validasi input
while [ $lagi !=
'y' ] && [ $lagi != 'Y' ] && [ $lagi != 't' ] &&
[ $lagi != 'T' ];
do
echo "Ops, isi lagi dengan (y/Y/t/Y)";
echo -n "Hitung lagi (y/t) :";
read lagi;
done
done
proses pemilihan
menu dan perhitungan biaya akan diulang terus selama anda memasukkan
y/Y dan t/T untuk berhenti. dalam script terdapat validasi input
menggunakan while, sehingga hanya y/Y/t/Tsaja yang dapat diterima
soalnya saya belum mendapatkan fungsi yang lebih efisien
:-)
statement until
jika while akan mengulang selama kondisi
benar, lain halnya dengan statement until yang akan mengulang selama
kondisi salah.
berikut contoh script ut menggunakan
until
#!/bin/bash
i=1;
until [ $i -gt 10 ];
do
echo $i;
let
i=$i+1
done
Hasilnya:
[fajar@linux$]./ut
1,2,3,4,5,6,7,8,9,10,
perhatikan
kodisi until yang salah [ $i -gt 10], dimana nilai awal i=1 dan akan
berhenti apabila nilai i = 11 (bernilai benar) 11 -gt 10.
statement
select
select berguna untuk pembuatan layout berbentuk menu
pilihan, anda lihat contoh script pembuatan menu diatas kita hanya
melakukannya dengan echo secara satu persatu, dengan select akan
terlihat lebih efisien.
syntax:
select varname in (<item
list>); do perintah; done
sewaktu dijalankan bash akan
menampilkan daftar menu yang diambil dari item list, serta akan
menampilkan prompt yang menunggu masukan dari keyboard, masukan
tersebut oleh bash disimpan di variabel builtin REPLY, apabila daftar
item list tidak dituliskan maka bash akan mengambil item list dari
parameter posisi sewaktu script dijalankan. lebih jelasnya lihat
contoh berikut:
#!/bin/bash
#menu1
clear
select
menu
do
echo "Anda memilih $REPLY yaitu
$menu"
done
Hasilnya:
layout:
[root@ewa$]./menu1
Slackware Redhat Mandrake
1) Slackware
2) Redhat
3)
Mandrake
#? 1
Anda memilih 1 yaitu Slackware
karena
item list tidak disertakan dalam script, maka sewaktu script
dijalankan kita menyertakan item list sebagai parameter posisi, coba
gunakan statement select pada program kedai
diatas.
#!/bin/bash
#kedai
lagi='y'
while [
$lagi == 'y' ] || [ $lagi == 'Y' ];
do
clear
select menu in "Bakso" "Gado-Gado" "Exit";
case $REPLY in
1) echo
-n "Banyak mangkuk =";
read jum
let bayar=jum*1500;
;;
2) echo -n "Banyak
porsi =";
read jum
let bayar=jum*2000;
;;
3) exit 0
;;
*) echo "Sorry,
tidak tersedia"
;;
esac
do
echo "Harga bayar = Rp.
$bayar"
echo "THX"
echo
echo -n "Hitung
lagi (y/t) :";
read lagi;
#untuk
validasi input
while [ $lagi != 'y' ] &&
[ $lagi != 'Y' ] && [ $lagi != 't' ] && [ $lagi !=
'T' ];
do
echo "Ops, isi lagi dengan (y/Y/t/Y)";
echo -n "Hitung lagi (y/t) :";
read lagi;
done
done
6.
Array Pada Shell
adalah kumpulan variabel dengan tipe sejenis, dimana array ini
merupakan feature Bash yang cukup indah :-) dan salah satu hal yang
cukup penting dalam bahasa pemrograman, anda bisa membayangkan array
ini sebagai tumpukan buku - buku dimeja belajar. lebih jelasnya
sebaiknya lihat dulu contoh script
berikut:
#!/bin/bash
#array1
buah=(Melon,Apel,Durian);
echo
${buah[*]};
Hasilnya:
[root@ewa$]./array1.
Melon,Apel,Durian
anda
lihat bahwa membuat tipe array di Bash begitu mudah, secara otomatis
array buah diciptakan dan string Melon menempati index pertama dari
array buah, perlu diketahui bahwa array di Bash dimulai dari index 0,
jadi array buah mempunyai struktur seperti berikut:
buah[0] berisi
Melon
buah[1] berisi Apel
buah[2] berisi Durian
0,1,2
adalah index array, berarti ada 3 elemen pada array buah, untuk
menampilkan isi semua elemen array gunakan perintah subtitusi seperti
pada contoh diatas, dengan index berisi "*" atau "@".
dengan adanya index array tentunya kita dapat mengisi array
perindexnya dan menampilkan isi array sesuai dengan index yang
diinginkan. anda lihat contoh
berikut:
#!/bin/bash
#array2
bulan[0]=31
bulan[1]=28
bulan[2]=31
bulan[3]=30
bulan[4]=31
bulan[5]=30
bulan[6]=31
bulan[7]=31
bulan[8]=30
bulan[9]=31
bulan[10]=30
bulan[11]=31
echo
"Banyak hari dalam bulan November adalah ${bulan[10]}
hari"
Hasilnya:
[root@ewa$]./array2
Banyak hari
dalam bulan November adalah 30 hari
sebenarnya kita dapat
mendeklarasikan array secara eksplisit menggunakan statement
declare
contohnya:
declare -a myarray
mendeklarasikan
variabel myarray sebagai array dengan opsi -a, kemudian anda sudah
dapat memberinya nilai baik untuk semua elemen atau hanya elemen
tertentu saja dengan perulangan yang telah kita pelajari pengisian
elemen array dapat lebih dipermudah, lihat contoh
:
#!/bin/bash
#array3
#deklarasikan variabel
array
declare -a angka
#clear
i=0;
while
[ $i -le 4 ];
do
let isi=$i*2;
angka[$i]=$isi;
let
i=$i+1;
done
#tampilkan semua elemen array
#dengan
indexnya berisi "*" atau "@"
echo
${angka[*]};
#destroy array angka (memory yang dipakai
dibebaskan kembali)
unset angka
Hasilnya:
[root@ewa$]./array3
0
2 4 6 8
7.
Function pada Shell
Merupakan
bagian script atau program yang berisi kumpulan beberapa statement
yang melaksanakan tugas tertentu. dengan subrutin kode script kita
tentunya lebih sederhana dan terstruktur, karena sekali fungsi telah
dibuat dan berhasil maka akan dapat digunakan kapan saja kita
inginkan. beberapa hal mengenai fungsi ini adalah:
Memungkinkan
kita menyusun kode script ke dalam bentuk modul-modul kecil yang
lebih efisien dengan tugasnya masing-masing.
Mencegah penulisan
kode yang berulang - ulang.
untuk membuat subrutin shell telah
menyediakan keyword function seperti pada bahasa C, akan tetapi ini
bersifat optional (artinya boleh digunakan boleh
tidak).
syntax:
function nama_fungsi() { perintah;
}
nama_fungsi adalah pengenal (identifier) yang aturan
penamaannya sama seperti pemberian nama variabel, setelah fungsi
dideklarasikan atau dibuat anda dapat memaggilnya dengan menyebutkan
nama fungsinya. lebih jelasnya lihat contoh script fungsi1
berikut:
#!/bin/bash
function say_hello() {
echo "Hello, apa kbabar"
}
#panggil fungsi
say_hello;
#panggil sekali
lagi
say_hello;
Hasilnya:
[root@ewa$]./fungsi1
Hello,
apa khabar
Hello, apa khabar
jika keyword function
disertakan maka kita boleh tidak menggunakan tanda kurung (), tetapi
jika keyword function tidak disertakan maka tanda kurung harus
digunakan, lihat contoh berikut:
#!/bin/bash
function
say_hello{
echo "Hello,apa khabar"
}
balas(){
echo "Baik-baik saja";
echo "Bagaimana
dengan anda ?";
}
#panggil fungsi
say_hello
say_hello;
#panggil fungsi
balas
balas;
Hasilnya:
[root@ewa$]./fungsi2
Hello,
apa khabar
Baik-baik saja
Bagaimana dengan anda ?
Sekian penjelasan
dari saya tentang Shell Progaming Pemula Pada Linux by [x] Wong
Goblog [x]