Kamis, 13 Desember 2012

Modul 5


FUNGSI 

Shell Bash menyediakan cara mudah untuk membuat fungsi di dalam skrip. Fungsi dapat dibuat menggunakan salah satu dari dua cara: dengan menulis fungsi di dalam skrip yang juga memanggilnya, atau menulis suatu “library” yang hanya berisi fungsi-fungsi dan menyertakan pustaka tersebut ke dalam skrip yang memanggil fungsi. Pada pendekatan kedua, baris:
.   ./library.sh
Diletakkan di awal skrip (sebelum fungsi-fungsi di dalam library.sh dipanggil). Sebagaimana pada bahasa lain, fungsi pada shell Bash juga dapat mengembalikan suatu  nilai (boleh pula tanpa ada nilai yang dikembalikan). Fungsi dapat mengembalikan nilai  dengan 3 cara:
·         Mengubah status dari satu atau lebih variabel
·          Menggunakan perintah exit untuk mengakhiri skrip shell
·        Menggunakan perintah return untuk mengakhiri fungsi dan mengembalikan nilai  yang dimasukkan ke bagian pemanggilan dari skrip shell
Mirip   bahasa   C.   Perintah exit   menghentikan   program   dan   perintah return  mengembalikan kontrol ke pemanggil.  Perbedaannya adalah  fungsi shell   tidak  dapat mengubah parameternya, meskipun dapat mengubah parameter-parameter global.

1 Pembuatan Fungsi
Skrip sederhana yang membuat dan menggunakan fungsi diperlihatkan kode berikut:
#!/bin/sh
#   Nama   file   skrip:   fungsi.sh
#   fungsi   add_a_user()...
add_a_user()
{
}
 USER=$1
PASSWORD=$2
shift;   shift;
#   dua   kali   shift,   sisanya   dianggap   komentar   ...
COMMENTS=$@
echo   "Menambahkan   pengguna   $USER   ..."
echo   useradd   -c   "$COMMENTS"   $USER
echo   passwd   $USER   $PASSWORD
echo   "Pengguna   $USER   ($COMMENTS)   ditambahkan,   passwordnya   $PASSWORD"
#   Bagian   utama   dari   skrip   berawal   di   sini
echo   "Memulai   skrip..."
add_a_user   bob   letmein   Bob   Holness   the   presenter
add_a_user   fred   badpassword   Fred   Durst   the   singer
add_a_user   bilko   worsepassword   Sgt.   Bilko   the   role   model
echo   "Akhir   dari   skrip..."
Baris 4 merupakan deklarasi fungsi, diakhiri dengan (). Kemudian diikuti oleh  {, dan  apapun yang ada sampai ditemukan pasangan  }   yang sesuai   dikatakan sebagai kode  atau isi dari fungsi tersebut. Kode ini tidak dieksekusi sampai fungsi tersebut dipanggil. Fungsi siap menerima panggilan. Perlu diketahui bahwa untuk contoh ini, perintah  useradd dan  passwd didahului dengan echo    ini  merupakan  teknik  debugging  yang  bermanfaat  untuk  memeriksa  apaka perintah yang tepat akan dieksekusi. Ini juga berarti bahwa anda dapat menjalankan skr tanpa menjadi root atau menambahkan  account pengguna „cerdik‟ ke sistem Linux! Telah diketahui bahwa skrip shell dieksekusi secara sekuensial, runtut. Tidak demikian dengan fungsi. Dalam hal ini, fungsi add_a_user dibaca dan diperiksa sintaksnya tetapi  tidak dieksekusi sampai secara eksplisit dipanggil. Eksekusi berawal dengan pernyataa echo "Start of script...".  Baris  berikutnya,   add_a_user bob letmein  Holness dikenal sebagai pemanggilan fungsi (function call) sehingga fungsi add_a_user  dimasuki dan memulai eksekusi dengan penambahan tertentu ke lingkungan:
$1=bob
$2=letmein
$3=Bob
$4=Holness
$5=the
$6=presenter
 Sehingga di dalam fungsi tersebut,  $1 diset menjadi bob, tidak peduli apa nilai $1 diluar dari fungsi. Sehingga jika kita ingin merujuk  $1 "original" di dalam fungsi tersebut, kita harus  memberikan  suatu  nama  lain  ke   $1    misalnya   A=$1 sebelum  kita  memangg fungsi.  Kemudian,  di dalam  fungsi,  kita  dapat  mengakses  ke   $A.  Kita  menggunakan perintah  shift lagi untuk mendapatkan  $3 dan seterusnya, semua parameter dalam $@. Fungsi kemudian  menambahkan pengguna dan menentukan passwordnya. Skrip meng-echo suatu komentar  dan mengembalikan kontrol ke baris berikutnya dari kode utama.

2 Lingkup Variabel
Programmer  yang  telah  menggunakan  bahasa  lain  mungkin  heran  dengan  aturan
lingkupan fungsi shell. Pada dasarnya, tidak ada batasan lingkupan selain dari paramete
($1, $2, $@, dan lain-lain). Perhatikan potongan kode berikut:
#!/bin/sh
#   Nama   file   skrip:   scope.sh
myfunc()
{
}
 echo   "Saya   telah   dipanggil   sebagai:   $@"
x=2
###   Skrip   utama   berawal   di   sini
echo   "Skrip   telah   dipanggil   dengan   $@"
x=1
echo   "x   bernilai   $x"
myfunc   1   2   3
echo   "x   bernilai   $x"
 Skrip, ketika dipanggil dengan scope.sh   a   b   c memberikan output sebagai berikut:
 Skrip   telah   dipanggil   dengan   a   b   c
x   bernilai   1
Saya   telah   dipanggil   sebagai:   1   2   3
x   bernilai   2

Contoh program scope.sh




Tidak ada komentar:

Posting Komentar