I. Pendahuluan
Dalam sistem operasi sistem linux, shell mempunyai posisi sebagai perantara antara sistem operasi, dalam hal ini kernel dengan pemakai. Untuk lebih jelasnya, perhatikan gambar di bawah ini:

Dari gambar tersebut tampak jelas bahwa shell merupakan jembatan bagi user untuk mengakses kernel. Hardware sebagai perangkat tempat untuk menjalankan sistem operasi hanya dapat diakses oleh kernel linux melalui device driver. Sehingga jika shell akan mengakses hardware, shell harus melalui kernel. Meskipun sebagai interface antara pengguna dan kernel, shell juga tetap menjadi interface aplikasi atau utilitas lainnya terhadap kernel. Dengan posisi seperti itu, penguasaan pengguna linux terhadap shell cukup menentukan dalam menguasai sistem operasi ini. Dengan shell, dapat dibuat sebuah perintah atau file yang berisi perintah-perintah itu sendiri. Hal lain yang menjadikan shell sangat penting adalah shell menyediakan bahasa pemrograman yang telah disertakan (embedded). Sama halnya dengan bahasa pemrograman tingkat tinggi lainnya, interpreter shell juga menyediakan variabel, flow control, quoting dan fungsi.
II. Macam-macam shell
Pada unix/linux terdapat berbagai macam shell dengan segala kelebihan dan kekurangannya masing-masing. Dengan banyaknya variasi shell ini, user bebas memilih shell yang akan digunakan. Secara ringkas, shell-shell dapat dibuat menjadi tabel seperti di bawah ini:
| Fitur |
sh |
csh |
Tcsh |
ksh |
Bash |
| Alias |
Tidak |
Ya |
Ya |
Ya |
Ya |
| Command Line Editing |
Tidak |
Tidak |
Ya |
Ya |
Ya |
| Directory Stack |
Tidak |
Ya |
Ya |
Tidak |
Ya |
| Autocomplete |
Tidak |
Ya |
Ya |
Ya |
Ya |
| Fungsi |
Ya |
Tidak |
Tidak |
Ya |
Ya |
| History |
Tidak |
Ya |
Ya |
Ya |
Ya |
| Job Control |
Tidak | Ya |
Ya |
Ya |
Ya |
| Key Binding |
Tidak | Tidak | Ya |
Tidak | Ya |
| Format Prompt |
Tidak |
Tidak | Ya |
Tidak | Ya |
| Koreksi Spelling | Tidak | Tidak | Ya | Tidak | Ya |
Berdasarkan tabel diatas, terlihat bahwa bash masih merupakan shell yang paling banyak memiliki fitur dan cukup sempurna dibanding dengan shell lain.
III. Bash Shell
Sekitar tahun 1983-1990 shell yang paling populer dan banyak digunakan pada lingkungan unix adalah c shell dan bourne shell, hingga dikembangkannya bash. Bash atau Bourne Again SHell merupakan pengembangan dari shell unix sebelumnya, sh yang dibuat oleh steve bourne. Bash kompatibel dengan shell sh yang bersama-sama menggunakan fitur dari ksh dan csh. Bash merupakan perbaikan dari sh untuk mode interaktif dan penggunaan pemrograman bash dikembangkan oleh brian fox dari Free Software Foundation. Shell ini mempunyai lisensi GNU copyleft sehingga bebas digunakan. Saat ini bash semakin berkembang dan banyak dijadikan sebagai shell default untuk sistem operasi linux seperti red hat dan centos. Bash semakin sempurna dengan tambahan fasilitas yang terdapat pada c shell dan korn shell. Pada tutorial kali ini, kita akan mengulas tentang shell yang bernama bash.
IV. Interpreter Bash Shell
Perlu diketahui bahwa bash juga menyediakan bahasa pemrograman dalam hal ini interpreter. Oleh karena interpreter, maka hasil dari program yang dibuat tidak akan dikompilasi, melainkan akan dijalankan secara langsung dengan terlebih dahulu memanggil interpreternya. Untuk itu, sebuah program interpreter hanya bisa dijalankan pada komputer yang didalamnya telah terinstal interpreter yang digunakan. Oleh karena menggunakan interpreter, maka sebuah skrip shell selalu diawali dengan memanggil interpreter yang digunakan untuk membantu interpreter dalam menterjemahkan program yang telah dibuat agar tidak salah. Interpreter yang digunakan oleh Bash adalah sebagai berikut:
#!/bin/bash
Namun, bisa saja interpreter untuk bash berbeda-beda di setiap distro. Maka dari itu ketikkan perintah berikut untuk mengetahui dimana file bash itu berada:
# whereis bash
Jika setelah mengetikkan perintah di atas tidak mengeluarkan output, itu berarti di sistem kita belum terinstal bash. Maka dari itu ketikkan perintah:
# yum install bash
Untuk menginstall bash di dalam sistem. Karena penulis menggunakan centos 5, maka ketika penulis mengetik perintah diatas, maka ada dua output yaitu /bin/bash dan /usr/share/man/man1/bash.1.gz. Gunakan file yang berada di direktori /bin sebagai interpreter untuk membuat skrip shell.
V. Membuat Bash Skrip
Buatlah file dengan nama tes.sh lalu ketikkan dalam file tersebut sebagai berikut:
kemudian simpan file tersebut. Untuk mengeksekusi file tersebut, gunakan perintah dibawah ini:
#!/bin/bash echo "Hello World"
kemudian simpan file tersebut. Untuk mengeksekusi file tersebut, gunakan perintah dibawah ini:
# chmod +x tes.sh # ./tes.shUntuk seterusnya, di dalam tutorial ini penulis hanya menuliskan skripnya saja sedangkan nama filenya diserahkan kepada pembaca kecuali jika diberikan di dalam tutorial ini dan untuk menjalankannya gunakan kedua perintah di atas dengan mengganti nama filenya saja. Serta perlu diingat bahwa kita tidak harus menggunakan ekstensi .sh untuk membuat skrip bash. Ekstensi tersebut hanya sebagai penanda bahwa skrip file ini merupakan skrip shell. Kita bisa saja langsung menggunakan nama filenya saja tanpa ekstensi untuk membuat dan menjalankan skrip bash. Untuk menjalankan banyak perintah dalam satu baris gunakan tanda titik koma (;). misalnya seperti contoh berikut:
#!/bin/bash
echo -n "Sekarang adalah tanggal:"; date; echo -n "Dan anda sedang menggunakan:";uname
Didalam skrip shell, untuk memberi komentar gunakan tanda #. Sehingga baris yang diawali dengan tanda ini tidak akan diproses oleh interpreter.
VI. Variabel pada shell
Variabel adalah sebuah kata yang mempunyai nilai. Sebuah variabel secara umum didefinisikan sebagai berikut:
nama_variabel=isi_variabel
Untuk membedakan apakah itu sebuah nama variabel atau tidak di dalam bash shell, sebaiknya etika menulis nama variabel dibuat huruf besar semua dan untuk memberi nilai pada variabel dapat digunakan beberapa cara misalnya isi variabel tersebut harus tidak ada spasi, atau diberi tanda underscore(_), atau kalau mau menggunakan spasi gunakan quoting yang berupa tanda petik ganda (" ") atau tunggal (' '). Untuk mengakses nilai dari variabel, maka pemanggilan nama varibel harus diawali dengan tanda dolar ($). Perhatikan contoh berikut:
#!/bin/bash OS=Linux DISTRO=Centos VERSI=5.2 echo "Kita akan mempelajari $OS dengan distro $DISTRO versi $VERSI"
A. Variabel array pada sell
Array adalah tipe data terstruktur yang digunakan untuk menyimpan sejumlah nilai dengan tipe yang sama. Perhatikan contoh berikut:
untuk menghapus variabel yang tidak digunakan lagi gunakan perintah unset nama_variabel.
#!/bin/bash
BAB[1]=Pengantar
BAB[2]=Isi
BAB[3]=Penutup
BAB[4]=Lampiran
# untuk menampilkan nilai dari bab 3
echo ${BAB[3]}
# untuk menampilkan seluruh nilai
echo ${BAB[*]}
untuk menghapus variabel yang tidak digunakan lagi gunakan perintah unset nama_variabel.
B. Macam-macam variabel
1. Variabel Lokal
Yaitu variabel yang ada hanya pada saat masih aktif dan hanya dikenal dilingkungan itu sendiri, sehingga variabel lokal hanya berlaku pada lingkungan dimana variabel tersebut dibuat. Contoh dari variabel ini adalah contoh variabel yang sebelumnya kita buat di atas.
2. Variabel Lingkungan
Yaitu variabel yang terdapat dalam shell dan digunakan dalam proses anak yang dijalankan oleh shell tersebut. Variabel lingkungan ini bisa berupa variabel lokal yang diekspor dan untuk merubahnya menjadi variabel lingkungan menggunakan perintah export. Contohnya adalah mengubah charset lokal menjadi lokal Indonesia
Yaitu variabel yang ada hanya pada saat masih aktif dan hanya dikenal dilingkungan itu sendiri, sehingga variabel lokal hanya berlaku pada lingkungan dimana variabel tersebut dibuat. Contoh dari variabel ini adalah contoh variabel yang sebelumnya kita buat di atas.
2. Variabel Lingkungan
Yaitu variabel yang terdapat dalam shell dan digunakan dalam proses anak yang dijalankan oleh shell tersebut. Variabel lingkungan ini bisa berupa variabel lokal yang diekspor dan untuk merubahnya menjadi variabel lingkungan menggunakan perintah export. Contohnya adalah mengubah charset lokal menjadi lokal Indonesia
LC_LOCAL=id_ID ; export $KLC_LOCAL
atau
export LC_LOCAL=id_ID
3. Variabel Shell
Yaitu variabel yang ditetapkan oleh shell dan digunakan oleh shell agar berjalan dengan baik dan sebenarnya variabel ini bisa dimasukkan dalam kategori variabel lingkungan. Contohnya adalah HOME,PWD,PS1, dan PS2
C. Variabel Dari Input
Untuk membaca masukan dari keyboard gunakan perintah read dan diikuti nama variabel. Perhatikan contoh berikut:
#/bin/bash echo "Masukkan namamu: " read nama echo "Masukkan karakter: " read karakter echo "Namamu adalah $nama" echo "Karakter yang telah diketikkan adalah $karakter"
D. Variabel Dari Perintah
Sebuah variabel dapat diperoleh dari sebuah perintah atau dengan kata lain menjadikan keluaran dari sebuah perintah menjadi variabel. Sintaks yang digunakan adalah sebagai berikut:
variabel=`perintah`
Perhatikan contoh berikut:
#!/bin/bash FILE=`ls | wc -l` echo "Jumlah file yang ada di direktori ini adalah $FILE"
VII. Quoting Pada Shell
Untuk memunculkan karakter-karakter khusus, umumnya para programmer menggunakan quoting atau escaping yaitu cara yang digunakan untuk mematikan arti dari karakter spesial pada shell. Ada beberapa quoting dalam shell diantaranya:
a. Escape Character
Quoting dengan cara ini menggunakan backslash. Biasanya karakter ini digunakan jika kita ingin menampilkan banyak perintah dalam satu baris. Perhatikan perintah-perintah berikut ini yang ditulis dalam konsol linux:
Pada contoh pertama akan terjadi kesalahan karena shell menganggap bahwa kata kamu yang ditulis merupakan perintah sedangkan di dalam shell tidak ada perintah kamu sehingga menghasilkan kesalahan. Maka dari itu kita menggunakan tanda backslash seperti pada contoh kedua.
# echo saya;kamu # echo saya\;kamu
Pada contoh pertama akan terjadi kesalahan karena shell menganggap bahwa kata kamu yang ditulis merupakan perintah sedangkan di dalam shell tidak ada perintah kamu sehingga menghasilkan kesalahan. Maka dari itu kita menggunakan tanda backslash seperti pada contoh kedua.
b. Single Quote
Penggunaannya sama dengan penggunaan tanda backslash, tetapi yang membedakannya yaitu jika menggunakan tanda petik tunggal tanda tersebut hanya cukup diberikan di akhir dan awal dari keseluruhan string yang akan dimunculkan. Perhatikan contoh berikut:
# echo 'tanggal;lahir'
c. Double Quote
Penggunaan double quote sama dengan single quote yaitu untuk mematikan makna dari karakter khusus. Perbedaannya adalah jika menggunakan petik tunggal semua string didalamnya tidak akan mempunyai makna lagi sedangkan jika menggunakan petik ganda beberapa karakter khusus tertentu tetap mempunyai makna aslinya. Karakter-karakter tersebut adalah:
$ ` \$ \` \" \\
Perhatikan contoh berikut untuk melihat perbedaan di antara keduanya:
# jawab=ya # echo '$jawab' # echo "$jawab"
d. Quoting Untuk ANSI-C
Karakter escape backslash yang diikuti dengan string tertentu akan dianggap sebagai karakter ANSI-C, sehingga akibat yang ditimbulkan tentu akan berbeda. Karakter-karakter tersebut biasa digunakan dalam bahsa pemrograman seperti C/C++. Berikut adalah karakter khusus tersebut:
| Karakter |
Arti |
| \a |
Bell |
| \b |
Backspasce |
| \e |
Sebuah karakter escape (Bukan ANSI C) |
| \f |
Form feed |
| \n |
Baris Baru |
| \r |
Carriage return |
| \t |
Tab Horizontal |
| \v |
Tab Vertikal |
| \\ |
Backslash |
| \' |
Cetak Single Quote |
| \" |
Cetak Double Quote |
| \nnn | Cetak karakter ASCII dengan kode oktal |
| \xnnn | Cetak karakter ASCII dengan kode heksadesimal |
VIII. Flow Control Dalam Bash
Flow control adalah fasilitas yang digunakan untuk mengontrol alur jalan sebuah perintah. Di dalam bash terdapat dua perintah utama yaitu if dan case.
A. Menggunakan if
Perintah if merupakan perintah built-in yang mensyaratkan kondisi tertentu untuk menjalankan perintah. Format dari if adalah sebagai berikut:
Untuk mengecek kesalahan dalam skrip bash ketikkan perintah berikut:
if kondisi then ekspresi fi
Untuk mengecek kesalahan dalam skrip bash ketikkan perintah berikut:
bash -x nama_file
Berikut adalah contoh-contoh dari perintah if
a. perintah if
#!/bin/bash # Skrip ini untuk mengecek apakah sebuah file ada atau tidak ada dalam sistem echo "Masukkan nama file yang akan dicari disertai dengan path yang lengkap: " read FILE echo "Sedang Mengecek..." if [ -f $FILE ] then echo "File $FILE ada." fi echo echo "...done."
Eksekusi skrip diatas lalu tuliskan file yang akan dicari misalnya kita ingin file httpd.conf maka kita harus menuliskan file tersebut lengkap dengan pathnya yaitu
/etc/httpd/conf/httpd.conf lalu lihat hasilnya.
b. Menggunakan if .. then .. else
Perintah ini sama dengan diatas tetapi dia mempunyai dua pilihan yang berbeda. Perhatikan dua contoh dibawah ini:
Contoh I:
#!/bin/bash # Skrip ini untuk mengecek apakah sebuah file ada atau tidak ada dalam sistem echo "Masukkan nama file beserta ekstensinya: " read FILE echo "Checking..." CARI=`find / -name $FILE` if [ -f $CARI ] then echo "File $CARI ada dalam sistem." else echo "File $CARI tidak ada dalam sistem" fi echo echo "...done."
Contoh II:
#!/bin/bash result=`ps aux | grep httpd | wc -l` if [ "$result" -gt 100 ] then service httpd restart else echo "Web Server tidak ada gangguan" fic. Menggunakan if .. elif
Penggunaan if .. elif digunakan untuk menyatakan if dalam if. dengan bentuk ini, sebuah skrip akan menjadi lebih sederhana. Perhatikan contoh berikut:
#!/bin/bash # Skrip ini akan mengetes apakan tahun yang diinput termasuk tahun kabisat echo -n "Masukkan Tahun: " read TAHUN if [ $[$TAHUN % 400] -eq "0" ]; then echo "Tahun $TAHUN adalah tahun kabisat dan bulan Februari mempunyai 29 hari" elif [ $[$TAHUN % 4] -eq 0 ]; then if [ $[$TAHUN % 100] -ne 0 ]; then echo "Tahun $TAHUN adalah tahun kabisat dan bulan Februari mempunyai 29 hari" else echo "Tahun $TAHUN adalah bukan tahun kabisat dan bulan Februari mempunyai 28 hari" fi else echo "Tahun $TAHUN adalah bukan tahun kabisat dan bulan Februari mempunyai 28 hari" fi
d. Menggunakan sintaks let
if dengan menggunakan sintaks let digunakan untuk kondisi yang menggunakan ekspresi numerik dan operasi aritmetika. Perhatikan contoh berikut:
#!/bin/bash if (($1 < $2)) then echo "Nilai $1 lebih kecil dari nilai $2" else echo "Nilai $1 lebih besar dari nilai $2" fi
Simpan dengan nama banding. kemudian coba eksekusi dengan cara
# ./banding 43 45 # ./banding 45 43
B. Menggunakan case
case adalah perintah lain yang digunakan untuk melakukan flow control. Dalam case nilai akan dibandingkan dengan nilai_1, nilai_2 dan seterusnya hingga ditemukan nilai yang sesuai. Jika nilainya sesuai, perintah yang terletak sesudah nilai_n akan dijalankan hingga ditemukan tanda double semicolon (;;) yang berarti proses akan diteruskan ke perintah setelah kata esac. Jika nilai_n tidak ditemukan, case akan menjalankan perintah setelah tanda asterik kurung tutup [*)]. Formatnya adalah sebagai berikut:
perhatikan contoh berikut:
case variabel in nilai_1) perintah ;; nilai_2) perintah;; esac
perhatikan contoh berikut:
#!/bin/bash #skrip ini untuk memberikan perintah pada webserver echo "Perintah untuk Webserver" echo "1. Status webserver" echo "2. Matikan webserver" echo "3. Nyalakan webserver" echo "4. Restart webserver" echo -n "Masukkan Pilihan: " read PILIHAN case $PILIHAN in 1) service httpd status ;; 2) service httpd stop ;; 3) service httpd start ;; 4) service httpd restart ;; *) echo "Salah masukkan Angka dan Keluar dari program";; esac
IX. Looping dalam Bash
Perintah looping atau pengulangan digunakan untuk menjalankan perintah sampai kondisinya terpenuhi. Berikut adalah perintah-perintah pengulangan:
1. for
Perintah ini digunakan untuk melakukan berdasarkan sejumlah kondisi yang berupa item-item. Jika item-item yang digunakan telah habis maka dengan sendirinya pengulangan akan berakhir. Formatnya adalah sebagai berikut:
Perhatikan contoh dibawah ini:
2. While
Format yang digunakan adalah :
Perintah while akan terus mengeksekusi perintah jika hasil dari kondisi bernilai benar. Jika kondisinya salah, maka pengulangan akan diakhiri. Perhatikan contoh berikut:
Skrip di atas akan terus mengulang jika kita mengetik selain huruf Y, y, T, dan t. Namun jika kita mengetik salah satu dari keempat huruf itu, maka pengulangan akan diakhiri.
3. Until
Perintah until sama dengan perintah while hanya saja pemeriksaan kondisi pada until dilakukan di belakang setelah perintah dalam do dan done. Formatnya adalah sebagai berikut:
Perhatikan contoh berikut:
Jika kita mengeksekusi skrip ini, maka skrip ini tidak akan berhenti sampai user yang dimaksud (dado) login ke dalam sistem.
4. Select
select adalah perintah looping yang sering digunakan untuk membuat sejumlah menu pilihan. Dengan menggunakan perintah select, prompt yang digunakan untuk memilih adalah PS3 yang secara default bentuknya adalah #?. Formatnya adalah perintah sebagai berikut:
Perhatikan contoh berikut ini:
Jalankan skrip tersebut, maka kita akan disodori daftar perintah-perintah yang harus kita pilih dan itu akan terus berulang. Jika kita ingin perulangan itu berhenti bisa tekan Ctrl+C. Jika kita ingin mengganti #? menjadi bentuk yang lebih elegan, maka masukkan skrip dibawah ini dan letakkan di dalam file yang sama dibawah kalimat #!/bin/bash:
1. for
Perintah ini digunakan untuk melakukan berdasarkan sejumlah kondisi yang berupa item-item. Jika item-item yang digunakan telah habis maka dengan sendirinya pengulangan akan berakhir. Formatnya adalah sebagai berikut:
for variabel in item1 item2 ... itemn do perintah done
Perhatikan contoh dibawah ini:
#!/bin/bash for os in windows linux unix do echo "$os adalan nama sistem operasi komputer" done
2. While
Format yang digunakan adalah :
while kondisi do perintah done
Perintah while akan terus mengeksekusi perintah jika hasil dari kondisi bernilai benar. Jika kondisinya salah, maka pengulangan akan diakhiri. Perhatikan contoh berikut:
#!/bin/bash while [[ $jawab != [YyTt] ]] do echo -n "Jawaban [Y/T]:" read jawab done echo "Jawaban anda adalah $jawab"
Skrip di atas akan terus mengulang jika kita mengetik selain huruf Y, y, T, dan t. Namun jika kita mengetik salah satu dari keempat huruf itu, maka pengulangan akan diakhiri.
3. Until
Perintah until sama dengan perintah while hanya saja pemeriksaan kondisi pada until dilakukan di belakang setelah perintah dalam do dan done. Formatnya adalah sebagai berikut:
until kondisi do perintah done
Perhatikan contoh berikut:
#!/bin/bash until who | grep dado do sleep 2 echo "dado belum login" done echo "dado sudah login"
Jika kita mengeksekusi skrip ini, maka skrip ini tidak akan berhenti sampai user yang dimaksud (dado) login ke dalam sistem.
4. Select
select adalah perintah looping yang sering digunakan untuk membuat sejumlah menu pilihan. Dengan menggunakan perintah select, prompt yang digunakan untuk memilih adalah PS3 yang secara default bentuknya adalah #?. Formatnya adalah perintah sebagai berikut:
select variabel in item_1 item_2 ... item_n do perintah done
Perhatikan contoh berikut ini:
#!/bin/bash select perintah in ls pwd date who do $perintah done
Jalankan skrip tersebut, maka kita akan disodori daftar perintah-perintah yang harus kita pilih dan itu akan terus berulang. Jika kita ingin perulangan itu berhenti bisa tekan Ctrl+C. Jika kita ingin mengganti #? menjadi bentuk yang lebih elegan, maka masukkan skrip dibawah ini dan letakkan di dalam file yang sama dibawah kalimat #!/bin/bash:
PS3="Pilihan Anda ?"
Perintah pada Looping
Dalam kondisi tertentu, sebuah looping dapat digabungkan dengan perintah lain. Maksud penggabungan itu adalah untuk memberikan kontrol terhadap looping.
1. Perintah shift
shift adalah parameter yang digunakan untuk menggeser posisi parameter ke kiri. Jika shift dijalankan tanpa argumen, penggeseran akan tetap dilakukan dengan mengurangi per satu parameter. Argumen yang dapat diberikan adalah n, dengan nilai n berupa bilangan bulat. Formatnya adalah
shift n
Perhatikan contoh berikut:
Jalankan perintah berikut dengan cara, misalnya:
1. Perintah shift
shift adalah parameter yang digunakan untuk menggeser posisi parameter ke kiri. Jika shift dijalankan tanpa argumen, penggeseran akan tetap dilakukan dengan mengurangi per satu parameter. Argumen yang dapat diberikan adalah n, dengan nilai n berupa bilangan bulat. Formatnya adalah
shift n
Perhatikan contoh berikut:
#!/bin/bash while (($# > 0)) do echo $* shift 1 done
Jalankan perintah berikut dengan cara, misalnya:
# ./shift 1 2 3 4 5 6
dan lihat hasilnya.
2. Perintah Break
Break merupakan perintah yang digunakan untuk menghentikan looping dengan paksa. Jika sebuah looping menemukan perintah break maka eksekusi akan dilanjutkan ke perintah setelah done.
Perhatikan skrip berikut:
Skrip diatas akan berhenti pada saat angka ke 49.
3. Perintah Continue
Continue merupakan printah untuk mengarahkan looping kembali ke atas dimana looping dijalankan, Dengan adanya perintah continue, perintah setelah continue tidak akan diproses (diabaikan). Perhatikan contoh berikut:
Output dari program di atas akan menampilkan string yang diikuti oleh variabel, tetapi ketika bertemu kondisi nama==dado, looping akan kembali ke atas dan dilanjutkan tanpa menjalankan perintah setelahnya. sehingga arief tidak akan ditampilkan oleh program tersebut.
2. Perintah Break
Break merupakan perintah yang digunakan untuk menghentikan looping dengan paksa. Jika sebuah looping menemukan perintah break maka eksekusi akan dilanjutkan ke perintah setelah done.
Perhatikan skrip berikut:
#!/bin/bash i=0 while : do echo -n "$i" let i+=1 if (($i >= 50 )) then break fi done echo " "
Skrip diatas akan berhenti pada saat angka ke 49.
3. Perintah Continue
Continue merupakan printah untuk mengarahkan looping kembali ke atas dimana looping dijalankan, Dengan adanya perintah continue, perintah setelah continue tidak akan diproses (diabaikan). Perhatikan contoh berikut:
#!/bin/bash for nama in dado ella olga dwi do if [[ $nama == dado ]] then continue else echo "hallo $nama" fi done
Output dari program di atas akan menampilkan string yang diikuti oleh variabel, tetapi ketika bertemu kondisi nama==dado, looping akan kembali ke atas dan dilanjutkan tanpa menjalankan perintah setelahnya. sehingga arief tidak akan ditampilkan oleh program tersebut.
X. Fungsi
Fungsi adalah nama untuk beberapa perintah yang dikelompokkan dan bash menyediakan fasilitas ini. Dengan adanya fasilitas ini, pembuatan program bisa lebih efisien karena dapat mengurangi pengulangan scrip untuk perintah yang yang dipanggil berkali-kali. Ada 2 format yang digunakan untuk membuat fungsi yaitu:
atau
Untuk memanggil fungsi yang telah dibuat, ketikkan nama fungsi tersebut. Namun, pemanggilan harus di bawah fungsi yang dipanggil karena jika dipanggil sebelum fungsi dibuat, fungsi tidak akan dikenal dan perintah pemanggilan fungsi akan dianggap salah.
Perhatikan contoh berikut:
function nama_fungsi {
perintah
...
}
atau
nama_fungsi ()
{
perintah
...
}
Untuk memanggil fungsi yang telah dibuat, ketikkan nama fungsi tersebut. Namun, pemanggilan harus di bawah fungsi yang dipanggil karena jika dipanggil sebelum fungsi dibuat, fungsi tidak akan dikenal dan perintah pemanggilan fungsi akan dianggap salah.
Perhatikan contoh berikut:
#!/bin/bash
pil ()
{
echo "1. Input Data"
echo "2. Baca Data"
echo "3. Keluar"
echo -n "Masukkan Pilihan Anda [1/3]: ";read pilihan
case $pilihan in
1) masukan;;
2) baca;;
3) exit;;
*) echo "Pilihan Salah, Silahkan Pilih lagi"; pil #memanggil diri sendiri
esac
}
masukan () {
echo "Masukkan data Anda: "
echo -n "Nama : ";read nama
echo -n "Alamat : ";read alamat
echo -n "Email : ";read email
pil
}
baca ()
{
echo "****************************************"
echo "$nama $alamat $email"
echo "****************************************"
pil
}
pil
A. Argumen fungsi
Dalam sebuah fungsi juga dikenal dengan adanya argumen. Argumen digunakan dalam pemanggilan fungsi. Cara pemanggilan dan pengenalan parameter sama dengan cara yang dilakukan pada shell script. Parameter $0 merupakan parameter untuk nama fungsi yang diikuti oleh $1 ... $n sebagai parameter argumen.
Perhatikan contoh berikut:
Jalankan eksekusi skrip tersebut dengan cara:
Perhatikan contoh berikut:
#!/bin/bash
jumlah() {
echo $(($1 + $2))
}
if [[ $1 == "" ]] || [[ $2 == "" ]] || [[ $3 != "" ]]
then
echo "Gunakan : $0 arg1 arg2"
else
jumlah $1 $2
fi
Jalankan eksekusi skrip tersebut dengan cara:
# ./arg 34 67
Namun jika kita hanya menulis
# ./arg
Maka akan ada pemberitahuan tentang bagaimana cara menulis eksekusi skrip yang benar.
B. Variabel Lokal Fungsi
Sebuah variabel yang dideklarasikan dalam shell skrip akan menjadi variabel global script tersebut, meskipun itu adalah variabel yang dideklarasikan dalam fungsi. Jadi variabel yang dideklarasikan dalam fungsi pun dapat digunakan oleh pemanggilanya atau fungsi lain. Ketika scrip menemukan deklarasi variabel yang sama, variabel yang akan digunakan adalah variabel tersebut. Untuk lebih jelasnya perhatikan contoh berikut:
Jalankan script tersebut dan lihat hasilnya. Terlihat bahwa output centos yang kedua merupakan hasil dari pengambilan fungsi di atas. Untuk mencegah variabel yang dideklarasikan pada fungsi menjadi variabel global perlu digunakan perintah lokal. Dengan penggunaan lokal, variabel lokal tidak akan dapat dipanggil dari luar fungsi yang mendeklarasikannya. Perhatikan contoh berikut:
Jalankan script tersebut dan lihat hasilnya. Terlihat bahwa hanya ada satu output centos karena ada penggunaan local seperti terlihat pada skrip di atas.
#!/bin/bash
jml() {
isi="centos"
echo $isi
}
jml
echo $isi
Jalankan script tersebut dan lihat hasilnya. Terlihat bahwa output centos yang kedua merupakan hasil dari pengambilan fungsi di atas. Untuk mencegah variabel yang dideklarasikan pada fungsi menjadi variabel global perlu digunakan perintah lokal. Dengan penggunaan lokal, variabel lokal tidak akan dapat dipanggil dari luar fungsi yang mendeklarasikannya. Perhatikan contoh berikut:
#!/bin/bash
jml() {
local isi
isi="centos"
echo $isi
}
jml
echo $isi
Jalankan script tersebut dan lihat hasilnya. Terlihat bahwa hanya ada satu output centos karena ada penggunaan local seperti terlihat pada skrip di atas.
C. Menghapus Fungsi
Untuk menghapus sebuah fungsi pada skrip shell dapat digunakan perintah unset dengan opsi -f. Format yang digunakan sebagai berikut:
unset -f nama_fungsi
perhatikan contoh berikut:
Jalankan skrip tersebut dan lihat hasilnya. Terlihat bahwa setelah baris unset -f jml dijalankan, jml bukan lagi sebuah fungsi sehingga linux menganggap bahwa jml merupakan salah satu commandnya tetapi ternyata command jml tidak ada di linux sehingga linux memberikan output error.
#!/bin/bash
jml() {
isi="centos"
echo $isi
}
jml
unset -f jml
jml
Jalankan skrip tersebut dan lihat hasilnya. Terlihat bahwa setelah baris unset -f jml dijalankan, jml bukan lagi sebuah fungsi sehingga linux menganggap bahwa jml merupakan salah satu commandnya tetapi ternyata command jml tidak ada di linux sehingga linux memberikan output error.
XI. Librari
Librari adalah fungsi dalam sebuah file yang dapat digunakan oleh beberapa file. Sebuah librari biasanya tidak mempunyai program utama, tetapi hanya berisi fungsi. Program utama skrip diletakkan pada program yang menggunakan librari tersebut. Perbedaan librari dengan skrip adalah skrip shell bisa berisi fungsi dan program utama, sedangkan librari hanya berisi fungsi tanpa program utama. Pada sebuah skrip shell yang mengandung fungsi biasanya fungsi itu hanya akan digunakan oleh scrip itu sendiri. Dengan memanfaatkan library, programmer cukup membuat sebuah library yang berisi fungsi yang kaan dipanggil oleh beberapa shell skrip. Kemudian jika ada shell skrip yang membutuhkan, file tersebut cukup memanggilnya.
Membuat dan memanggil library
Untuk membuat library sama halnya dengan membuat shel skrip biasa namun tanpa mempunyai program utama. Misal kita ingin membuat library yang akan menampilkan pesan kesalahan jika program yang dijalankan tidak mempunyai parameter, seperti skrip berikut:
Untuk memanggil library, digunakan perintah titik (.) yang diikuti dengan nama file librarinya. Namun harus diingat bahwa tanda titik dan nama filenya harus dipisahkan dengan tanda spasi. Dan juga untuk menghindari kesalahan di dalam pemanggilan library, maka sebaiknya ditulis juga path dimana file tersebut berada. Misalnya file library diatas di tulis di direktory root, dan kita ingin menggunakan file tersebut maka di dalam skrip ditulis sebagai berikut:
. /root/salah
#!/bin/bash
salah()
{
echo "Gunakan Perintah : $0 argumen"
}
Untuk memanggil library, digunakan perintah titik (.) yang diikuti dengan nama file librarinya. Namun harus diingat bahwa tanda titik dan nama filenya harus dipisahkan dengan tanda spasi. Dan juga untuk menghindari kesalahan di dalam pemanggilan library, maka sebaiknya ditulis juga path dimana file tersebut berada. Misalnya file library diatas di tulis di direktory root, dan kita ingin menggunakan file tersebut maka di dalam skrip ditulis sebagai berikut:
Perhatikan contoh di bawah ini dengan membuat file skrip:
#!/bin/bash . /root/salah if [[ $1 == "" ]] then salah else echo "Hello $1" fi
Jalankan skrip tersebut sebagai berikut:
# ./skripDan lihat hasilnya. Bandingkan dengan kalau kita menjalankan sebagai berikut:
# ./skrip awang
XII. Operasi String
Operasi string yang dimaksud adalah manipulasi terhadap string yang dilakukan menggunakan variabel. Proses operasi dilakukan dengan memberikan ekspresi ke variabel-variabel tersebut menggunakan expr atau parameter.
A. Panjang string
Panjang sebuah string dapat dilihat dengan format berikut:
expr length $string
contoh:
#!/bin/bash string=12345abcde expr length $string
B. Index String
Index digunakan untuk melihat posisi karakter pertama $substring pada $string. Formatnya adalah:
expr index $string $substring
contoh
#!/bin/bash string=1234567abcdef echo `expr index "$string" 0` echo `expr index "$string" 1` echo `expr index "$string" c`
C. Memotong String
Pemotongan string secara default dilakukan pada posisi tertentu dari awal string. Pemotongan juga dapat dimulai dari posisi tertentu hingga jumlah karakter yang ditentukan. Formatnya sebagai berikut:
${string:posisi}
contoh:
#!/bin/bash
string=1234567abcdef1234567
echo $string
echo ${string:0}
echo ${string:4}
echo ${string:8:4}
D. Menghapus string
Jika pemotongan string menggunakan parameter jumlah karakter, penghapusan string menggunakan parameter karakter itu sendiri. Formatnya adalah:
${string#substring}
${string##substring}
${string%substring}
${string%%substring}
Perhatikan contoh berikut:
#!/bin/bash
string=abcdefgABCDEFGabcABC123456789
# menghapus string a sampai B terdekat diambil dari awal
echo ${string#a*B}
# menghapus string a sampai B terjauh diambil dari awal
echo ${string##a*B}
# menghapus string B sampai 9 terdekat diambil dari akhir
echo ${string%B*9}
# menghapus string B sampai 9 terdekat diambil dari akhir
echo ${string%%B*9}
E. Penggantian String
Penggantian string digunakan untuk mengganti $substring dengan $substring pengganti. Format yang digunakan adalah:
contoh:
${string/substring/substring2}
${string//substring/substring2}
${string/#substring/substring2}
${string/%substring/substring2}
contoh:
#!/bin/bash
string=abcABCabcABC123456789
# mengganti string abc pertama yang ditemukan dengan 987
echo ${string/abc/987}
# mengganti semua string abc dengan 987
echo ${string//abc/987}
# menyisipkan string xyz di awal string
echo ${string/#/xyz}
# mengganti string yabg diawali dengan abc dengan 123
echo ${string/#abc/123}
# Mengganti string yang diakhiri dengan 6789 dengan wxyz
echo ${string/%6789/wxyz}
XIII. Operasi Bilangan
Sebenarnya nilai variabel pada Bash akan mempunyai tipe string, baik numerik maupun string. Oleh karena angka pun dianggap sebagai string, maka untuk melakukan operasi aritmetika, angka tersebut harus diekspresikan menjadi benar-benar numerik. Sintaksnya adalah sebagai berikut:
expr integer operator integer
contoh:
Let
Let dapat digunakan untuk melakukan operator aritmatika dengan tipe integer. Hasil dari perintah let akan dijadikan ke sebuah variabel. Formatnya sebagai berikut:
#!/bin/bash if [[ $1 = "" ]] || [[ $2 = "" ]] then echo "masukkan angka yang akan dikalikan" else kali=`expr $1 \* $2` echo "Hasil Perkalian : $kali" fi
Let
Let dapat digunakan untuk melakukan operator aritmatika dengan tipe integer. Hasil dari perintah let akan dijadikan ke sebuah variabel. Formatnya sebagai berikut:
let ekspresi
Contohnya:
#!/bin/bash let x=202%5 echo $x
Referensi:
Bash Scripting Untuk Administrasi Sistem Linux, Rofiq Yuliardi
Bash Guide For Beginners, Machtelt Garrels
http://www.linuxconfig.org/
Bash Guide For Beginners, Machtelt Garrels
http://www.linuxconfig.org/
4 Ramadhan 1430 H
25 Agustus 2009 M
| Comments |
|
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
Powered by !JoomlaComment 3.26














Dear Accank, Hal itu tergantung dari...
Dear Ronald, Terima kasih atas saran...
Untuk pengguna debian 6.0 (squeeze) d...
mas sy ingin bertanya,dari semua netw...
Dear Syukran, Mungkin hadits ini bis...