Pengenalan Pemrograman Bash
Pendahuluan
Apa Itu Bash ? [3]
Bash adalah sebuah shell, atau interpreter perintah baris, untuk sistem operasi GNU. Namanya merupakan singkatan dari "Bourne-Again SHell", diambil dari nama Stephen Bourne, penulis shell Unix /bin/sh.
Bash sangat kompatibel dengan sh dan menyertakan fitur-fitur bermanfaat dari shell Korn (ksh) dan shell C (csh). Ia merupakan implementasi lengkap spesifikasi shell POSIX.2.
Fitur Bash [1]
Berikut ini adalah beberapa fitur yang dimiliki oleh Bash :
Pengeditan dan Pelengkapan
Bash menawarkan sebuah fasilitas pengeditan perintah baris yang mengijinkan user untuk mengedit perintah baris menggunakan perintah-perintah emacs atau vi. Pengeditan mengijinkan perbaikan dilakukan tanpa perlu menghapus hingga tempat kesalahan atau memulai baris baru. Fasilitas pengeditan mencakup sebuah fitur yang mengijinkan user untuk melengkapi perintah dan nama file.
Sejarah dan Pemasukan Kembali Perintah
Fitur sejarah Bash mengingat perintah-perintah yang dimasukkan ke shell dan memungkinkan mereka dipanggil kembali dan dieksekusi.
Kendali Kerja
Pada sistem yang mendukungnya, Bash menyediakan sebuah interface ke fasilitas kendali kerja sistem operasi, yang memungkinkan proses-proses untuk di-suspend dan dimulai kembali, dan memindahkan antara kerja foreground dan background.
Fungsi Shell dan Alias
Mekanisme ini tersedia untuk mengikatkan identifier yang dipilih user ke sebuah daftar perintah yang akan dieksekusi ketika identifier digunakan sebagai nama perintah. Fungsi-fungsi memungkinkan adanya variabel lokal dan rekursi, dan mempunyai akses ke lingkungan shell pemanggil. Alias dapat digunakan untuk membuat sebuah mnemonic untuk sebuah perintah, ekspansi sebuah kata tunggal menjadi perintah yang kompleks, atau memastikan bahwa sebuah perintah dipanggil dengan option yang tepat.
Array
Versi Bash yang lebih baru daripada bash-2.0 mendukung array terindeks dengan ukuran tidak terbatas. Subskrip untuk sebuah array adalah ekspresi aritmatika. Array dapat diberi nilai dengan sebuah sintaks penugasan campuran, dan beberapa fungsi built-in memiliki option untuk beroperasi pada variabel array.
Aritmatika
Bash memungkinkan user untuk melakukan aritmatika integer dalam sembarang basis mulai dari dua hingga enam puluh empat. Hampir semua operator aritmatika bahasa C tersedia dengan sistem dan presedensi yang sama. Ekspansi aritmatika memungkinkan sebuah ekspresi aritmatika untuk dievaluasi dan hasilnya dimasukkan ke perintah baris. Variabel shell dapat digunakan sebagai operand, dan nilai sebuah ekspresi dapat diberikan ke sebuah variabel.
Sebuah ekspresi aritmatika dapat digunakan sebagai sebuah perintah; status exit sebuah perintah adalah nilai ekspresi.
ANSI-C Quoting
Terdapat sintaks quoting baru yang memungkinkan backslash-escaped characters dalam string untuk diekspansikan menurut standar ANSI-C.
Kemampuan I/O Yang Diperluas
Bash menyediakan beberapa fitur input dan output yang tidak ada dalam sh, termasuk kemampuan untuk menspesifikasikan sebuah file atau deskriptor file untuk input dan output, baca atau tulis ke proses asinkronous menggunakan named pipes, membaca baris yang berakhiran dengan backslash, menampilkan sebuah prompt pada terminal sebelum pembacaan, format menu dan menginterpretasikan responnya ke mereka.
Keamanan
Bash menyediakan sebuah lingkungan shell yang dibatasi. Pengendalian eksekusi skrip setuid/setgid juga dimungkinkan.
Mode POSIX
Bash hampir sesuai dengan POSIX.2. Mode POSIX merubah beberapa bidang agar membuat perilaku Bash sesuai dengan standar. Dalam mode POSIX, Bash adalah POSIX.2 compliant.
Internasionalisasi
Bash menyediakan sebuah sintaks quoting baru yang memungkinkan string diterjemahkan menurut locale saat ini. Locale dapat pula dirubah, sehingga pesan shell dapat bersifat language-spesific.
Fasilitas pengeditan perintah baris memungkinkan input karakter delapan-bit, sehingga kebanyakan keluarga set karakter ISO-8859 didukung.
Cukup dengan basa-basinya, sekarang kita mulai membahas mengenai pemrograman skrip dengan menggunakan Bash. Saya harap anda semua masih bersama saya. :)
Membuat Skrip Shell
Shell skrip umumnya ditulis dengan menggunakan teks editor, misalnya vi atau emacs, yang biasanya terdiri dari perintah-perintah dan komentar. Komentar ditandai dengan tanda "#" dan terdiri dari teks yang memberitahu apa yang terjadi.
Berikut ini adalah contoh sebuah shell skrip sederhana :
#!/bin/bash
echo "Hello World"
echo "This is my first Bash script"
Simpanlah ke dalam file hello.sh. Kemudian anda dapat membuat skrip tersebut dapat dijalankan, dengan cara :
* Menjalankan bash hello.sh
* Merubah mode file tersebut menjadi dapat dieksekusi, chmod 755 hello.sh, kemudian jalankan dengan cara ./hello.sh
Baris pertama skrip di atas akan menandakan program yang akan mengeksekusi skrip. Baris ini biasanya disebut "shbang".
Simbol "#!" adalah simbol ajaib yang digunakan oleh kernel untuk mengindentifikasikan program yang akan menginterpretasi baris-baris skrip. Baris ini harus berada paling atas dalam skrip anda.
Baris ketiga akan mencetak string "Hello World" dan diakhiri dengan perpindahan baris. Baris keempat mencetak string "This is my first Bash script".
Mudah bukan ?
Selanjutnya kita akan membahas mengenai variabel.
Variabel
Memberikan Nilai Variabel
Anda dapat menggunakan variabel sama seperti pada bahasa pemrograman lainnya. Dalam Bash tidak ada tipe data, sebuah variabel dalam Bash dapat berupa bilangan, karakter, atau string karakter.
Untuk membuat sebuah variabel, anda tidak perlu mendeklarasikannya terlebih dahulu, cukup dengan memberikan nilai kepada referensinya anda sudah membuat variabel. Perhatikan cuplikan berikut :
nama="Alexander Graham Bell"
Pada cuplikan di atas, anda telah membuat sebuah variabel nama yang berisikan nilai "Alexander Graham Bell".
Mengambil Nilai Variabel
Untuk mengambil nilai sebuah variabel, dapat dilakukan dengan cara memberikan tanda dolar di awal variabel sebagai berikut :
echo "$nama"
Variabel Lokal
Variabel lokal dapat dibuat dengan menggunakan kata kunci local.
local Hello="Hello World"
Mengambil Input User
Seringkali dalam menulis sebuah skrip diperlukan input dari user, untuk melakukan hal tersebut dapat digunakan perintah read.
read adalah sebuah perintah built-in yang membaca input dari terminal atau dari sebuah file hingga sebuah baris baru. Perintah read memiliki empat buah option untuk mengendalikan perilakunya : -a, -e,-p, dan -r.
Format Keterangan
read jawaban Membaca sebuah baris dari input standar dan menyimpannya ke variabel jawaban
read -a namaarray Memasukkan daftar kata ke dalam array namaarray
read -e Digunakan dalam shell interaktif dengan efek pengeditan perintah baris
read -p prompt Menampilkan prompt, menunggu input, dan menyimpannya ke dalam variabel REPLY
read -r line Membolehkan input berisikan sebuah backslash
Berikut ini adalah sebuah contoh penggunaan perintah read di atas :
#!/bin/bash
# read.sh
echo -n "Masukkan nama anda : "
read nama
echo -e "Hallo $nama, Selamat Datang Di Linux"
Kemudian lakukan :
* Menyimpannya ke dalam file bernama read.sh.
* Membuat file tersebut dapat dieksekusi, dengan cara :
$ chmod a+x read.sh
Jika skrip di atas dijalankan, hasilnya akan tampak sebagai berikut :
\$ ./read.sh
Masukkan nama anda : Tux Si Penguin
Hallo Tux Si Penguin, Selamat Datang Di Linux
Aritmatika
Dalam bagian ini kita akan membahas mengenai operasi aritmatika dengan menggunakan Bash.
Integer
Perintah declare
Variabel-variabel dapat dideklarasikan sebagai sebuah integer dengan perintah declare -i. Jika anda berusaha untuk memberikan sembarang nilai string, bash akan mengisikan 0 ke variabel tersebut.
Operasi aritmatika dapat dilakukan pada variabel-variabel yang telah dideklarasikan sebagai integer. Jika sebuah variabel belum dideklarasikan sebagai integer, perintah let memungkinkan operasi aritmatika.
#!/bin/bash
declare -i num
num=1
num=5+num
echo $num
Hasil skrip di atas :
6
Perintah let
Perintah let adalah sebuah perintah built-in yang digunakan untuk melakukan aritmatika integer dan pengujian ekspresi numerik.
Berikut ini adalah contoh penggunaan perintah let :
#!/bin/bash
num=1
let num=5+num
echo $num
Tanda kurung ganda dapat digunakan untuk menggantikan let pada Bash 2.x. Jadi skrip di atas dapat pula ditulis sebagai berikut :
#!/bin/bash
num=1
(( num+=5 ))
echo $num
Hasil kedua buah skrip di atas adalah :
6
Floating Point
Bash hanya mendukung operasi aritmatika pada integer, namun utilitas bc, awk dapat digunakan bila anda menginginkan perhitungan yang lebih kompleks.
Contoh :
#!/bin/bash
num=`echo "scale=3; 13 / 2" | bc`
echo $num
Keterangan :
Output perintah echo di-pipe ke program bc. Skala diset ke 3, yang merupakan digit signifikan di belakang koma. Operasi yang dilakukan adalah pembagian 13 dengan 2. Seluruh pipeline diapit oleh tanda backquote (`). Substitusi perintah akan dilakukan dan hasilkan diberikan ke variabel num, yang kemudian dicetak ke layar.
Hasil skrip di atas adalah :
6.500
Kondisional
Hingga saat ini, kita telah membuat beberapa buah skrip yang menjalankan aksinya secara berurutan. Seringkali dalam melakukan pemrograman skrip dibutuhkan proses yang dapat mengambil keputusan untuk menjalankan suatu aksi atau tidak, keputusan ini diambil setelah mengevaluasi sebuah ekspresi.
Perintah test
Perintah test biasanya digunakan untuk mengevaluasi sebuah ekspresi.
Pada Bash 2.x, untuk memeriksa sebuah ekspresi dapat digunakan perintah test, atau ekspresi tersebut diapit dalam sejumlah bracket tunggal.
Perintah if
Bentuk dasar konstruksi if adalah sebagai berikut :
if [ekspresi]; then
kode_jika_ekspresi_benar
fi
Berikut ini adalah sebuah skrip sederhana yang menerapkan konstruksi di atas :
#!/bin/bash
echo -n "Masukkan sebuah password : "
read password
if [ $password = "eureka" ]; then
echo "you're right."
fi
Tampilan setelah skrip di atas dijalankan adalah sebagai berikut :
Masukkan sebuah password : eureka
you're right.
Perintah if/else
Bentuk dasar konstruksi if/else adalah sebagai berikut :
if [ekspresi]; then
kode_jika_ekspresi_benar
else
kode_jika_ekspresi_salah
fi
Dengan kembali menggunakan contoh di atas yang telah dimodifikasi :
#!/bin/bash
echo -n "Masukkan sebuah password : "
read password
if [ "$password" = "eureka" ]; then
echo "you're right."
else
echo "you're wrong."
fi
Hasil menjalankan skrip di atas :
Masukkan sebuah password : eureka
you're right.
Masukkan sebuah password : aha
you're wrong.
Perintah if/elif/else
Perintah if/elif/else memungkinkan sebuah proses pengambilan keputusan multi-cara. Jika kondisi yang mengikuti if gagal, kondisi yang mengikuti elif akan diuji. Jika berhasil, perintah setelah statemen then akan dieksekusi. Jika gagal, maka kondisi elif berikutnya akan diperiksa. Jika tidak ada yang sukses, perintah pada blok else akan dieksekusi.
Bentuk perintah ini adalah sebagai berikut :
if kondisi1
then
perintah
elif kondisi2
perintah
elif kondisi3
perintah
else
perintah
fi
Perintah case
Perintah case dapat digunakan sebagai alternatif perintah if/elif/else. Nilai variabel case dicocokkan dengan nilai1, nilai2, dan seterusnya, hingga ditemukan sebuah kecocokan. Ketika sebuah nilai cocok dengan variabel case, perintah-perintah yang mengikuti nilai tersebut dieksekusi hingga ditemukan tanda titik-koma ganda. Lalu eksekusi akan mulai setelah kata esac.
Jika variabel case tidak cocok, program akan mengeksekusi perintah setelah *), nilai baku hingga ;; atau esac ditemukan. Nilai *) berfungsi sama dengan statemen else pada kondisional if/else. Nilai case memungkinkan penggunaan wildcard shell dan tanda bar vertikal ($\vert$) untuk meng-OR-kan dua buah nilai.
Format perintah case adalah sebagai berikut :
case variabel in
nilai1)
perintah
;;
nilai2)
perintah
;;
*)
perintah
;;
esac
Looping
Looping digunakan bila anda ingin mengeksekusi suatu blok perintah berulang kali. Terdapat tiga buah konstruksi loop yang biasa digunakan, yaitu for, while, dan until.
Perintah for
Perintah for digunakan untuk melakukan perulangan dengan jumlah yang telah ditentukan sebelumnya.
Perintah for memiliki bentuk dasar sebagai berikut :
for ekspresi_kendali; do
perintah
done
Untuk lebih jelasnya mari kita lihat contoh skrip berikut ini :
#!/bin/bash
for i in $( ls ); do
echo "Nama file : "$i
done
Skrip di atas berfungsi untuk menampilkan file-file atau subdirektori-subdirektori yang ada pada direktori tempat skrip tersebut dijalankan.
Berikut ini adalah cuplikan hasil menjalankan skrip tersebut :
...
Nama file : songs
Nama file : ss12.jpg
Nama file : ssh-stream-tn.jpg
Nama file : ssh-stream.jpg
Nama file : sup.pdf
Nama file : suser-report.lyx
Nama file : tcp-stream-tn.jpg
Nama file : tcp-stream.jpg
Nama file : tcp.pdf
...
Perintah while
Perintah while digunakan untuk melakukan perulangan selama ekspresi kendali bernilai benar, ia akan berhenti ketika ekspresi kendali bernilai salah atau diberikan sebuah break eksplisit dalam kode program.
Perintah while memiliki bentuk dasar sebagai berikut :
while kondisi_ekspresi; do
perintah
done
Perhatikan contoh skrip dengan menggunakan while berikut :
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 5 ]; do
echo "counter = "$COUNTER
let COUNTER=COUNTER+1
done
Hasilnya :
counter = 0
counter = 1
counter = 2
counter = 3
counter = 4
Perintah until
Perintah until digunakan untuk melakukan perulangan selama ekspresi kendali bernilai salah, ia akan berhenti ketika ekspresi kendali bernilai benar atau diberikan sebuah break eksplisit dalam kode program.
Perintah until memiliki bentuk dasar sebagai berikut :
until kondisi_ekspresi; do
perintah
done
Berikut ini contoh sederhana penggunaan until :
#!/bin/bash
COUNTER=5
until [ $COUNTER -lt 0 ]; do
echo "counter = "$COUNTER
let COUNTER=COUNTER-1
done
Hasilnya :
counter = 5
counter = 4
counter = 3
counter = 2
counter = 1
counter = 0
Fungsi
Sama seperti pada bahasa pemrograman lainnya, anda dapat membuat sebuah fungsi untuk mengelompokkan kode yang berulang kali digunakan.
Untuk mendeklarasikan fungsi cukup dengan cara menuliskan function sebagai berikut :
function cetak()
{
...
}
Pada perintah di atas, kita mendeklarasikan sebuah fungsi dengan nama cetak.
Sementara untuk memanggilnya dapat kita lakukan dengan cara yang sama dengan cara pemanggilan program :
function keluar()
{
exit
}
function cetak()
{
echo "Hello World"
}
# utama
cetak
keluar
Jumat, 14 Mei 2010
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar