================================TUTORIAL MINI - SHELL SCRIPT================================Rio Astamal - rio@rioastamal.n...
Masukkan Nama: STIKOMMasukkan angka: 20STIKOM, angka yang anda masukkan terlalu kecil (percobaan ke-1)Masukkan angka: 34ST...
sedikit banyak perintah dasar command line, seperti mengkopi file(cp),merename file(mv), mencetak string (echo), melihat f...
lug@stikom.edu:~$ b=World!lug@stikom.edu:~$ echo $a$bHello World!lug@stikom.edu:~$ echo ${a}${b}Hello World!Cara yang tera...
lug@stikom.edu:~$ ls --allUntuk membaca argument dalam shell script digunakan special variabel yaitu$0, $1, $2,...$9. Vari...
Secara matematis perhitungannya adalah(argument-1 + argument-2) + argument-3.Tidak seperti bahasa tingkat tinggi, pada she...
echo -n Masukkan bilangan-3: read bil3echo echo -n "Hasil dari $bil1 * $bil2 + $bil3 = "echo `expr $[ $bil1 * $bil2 ] + $b...
sebuah file maka kita dapat menggunakan simbol ">" atau ">>". Intinya segalaSTDOUT dapat dilakukan redirect.lug@stikom.edu...
echo -n "HARI INI: "indo_datereturn}welcomelug@stikom.edu:~$ chmod +x fungsi.shApakah fungsi pada shell script juga meneri...
if kondisi1then......elif kondisi1......elif kondisi-n......else......fi--------------case $variabel inpattern1) perintah....
echo Dimana bil1 dan bil2 harus angka genap.return}function cek_arg() {if test $num_arg -lt 2thenhelpexit 1 # keluar denga...
Argument bernilai negatif--------------------------------2.3 if...then...elif...else...fi--------------------------------S...
filug@stikom.edu:~$ sh nested-if.sh 10Angka yang anda masukkan genap dan >= 0lug@stikom.edu:~$ sh nested-if.sh -5Angka yan...
Setelah anda mengetahui bagaimana menggunakan percabangan pada shell scriptmaka kita dapat menggunakanya untuk menangkap e...
done-------------------------for (( expr1; expr2; expr3 ))do......done-------------------3.1 for...do...done--------------...
lug@stikom.edu:~$ nano while.sh#!/bin/shi=5while [ $i -ge 1 ]doecho "$i Mod 2 = "`expr $i % 2`i=`expr $i - 1`donelug@stiko...
http://www.freeos.com/guides/lsst/http://en.wikipedia.org/wiki/Shell_scripthttp://ilmukomputer.com/2007/03/06/membaca-pros...
Upcoming SlideShare
Loading in …5
×

orial mini-shell

400 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
400
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

orial mini-shell

  1. 1. ================================TUTORIAL MINI - SHELL SCRIPT================================Rio Astamal - rio@rioastamal.net--------------------------------versi 0.1 - 15/05/2008--------------------------------Lisensi - Creative Commons Attribution-Share Alike 3.0 : BY SA--------------------------------http://www.rioastamal.net/--------------------------------1. Shell Script1.0 Apa Itu Shell Script?1.1 Variabel1.2 Command Line & Argument1.3 Perhitungan Aritmatik1.4 User input1.5 Piping1.6 Redirection1.7 Fungsi2. Percabangan2.0 Percabangan dalam shell script2.1 if...then...fi2.2 if...then...else...fi2.3 if...then...elif...else...if2.4 nested if2.5 case...in...esac2.6 Menangkap error status3. Perulangan3.0 Perulangan dalam shell script3.1 for...do...done3.2 for...in...do...done3.3 while...do...done3.4 Perulangan bersarang4. Soal-soal Latihan4.1 Anda ingin membersihkan Cache Firefox jika telah mencapai 5MBTips: gunakan perintah `du` untuk mengecek ukuran folder4.2 Anda ingin membuat script untuk melakukan backup otomatis log file serverapache setiap tengah malam lalu otomatis membersihkannya4.3 Anda ingin membuat membuat tampilan seperti berikut menggunakan looping,4.3.11 1 * * * * * *22 12 * * * * * *333 123 * * * * * *4444 1234 * * * * * *55555 12345 * * * * * *4.4 Anda ingin membuat shell script yang fungsinya mirip dengan program `ps`yaitu untuk menampilkan proses dan juga informasi system4.5 Anda ingin membuat game tebak angka sederhana dimana jika dijalankanoutputnya akan seperti berikut:***********************************SELAMAT DATANG DI GAME TEBAK ANGKA***********************************PERATURAN GAME:1. Angka diantara 10 - 502. Angka adalah genap3. Maksimal percobaan adalah 5 kali
  2. 2. Masukkan Nama: STIKOMMasukkan angka: 20STIKOM, angka yang anda masukkan terlalu kecil (percobaan ke-1)Masukkan angka: 34STIKOM, angka yang anda masukkan terlalu besar (percobaan ke-2)Masukkan angka: 30STIKOM, angka yang anda masukkan terlalu besar (percobaan ke-3)Masukkan angka: 28STIKOM, angka yang anda masukkan terlalu besar (percobaan ke-4)Masukkan angka: 22------------------------ GAME OVER ----------------------------JAWABAN YANG BENAR ADALAH : 24Apakah anda ingin coba lagi (y/t) ? y---------------------------------------------------------------Masukkan angka: 44STIKOM, angka yang anda masukkan terlalu kecil (percobaan ke-1)Masukkan angka: 48------------- SELAMAT TEBAKAN ANDA BENAR ----------------------Anda berhasil menebak dalam 2 kali percobaan.Apakah anda ingin coba lagi (y/t) ? t---------------------------------------------------------------------------- (c) COPYRIGHT 2008 - LUG STIKOM -----------------Jawaban didapat secara random antara 10 - 50 dan harus genap. Untukmendapatan random number pada shell script dapat digunakan beberapa caradiantaranya:1. Menggunakan magic variable $RANDOMmisal untuk menghasilkan angka range 1 - 10 maka:echo $[ ($RANDOM % 10) + 1 ]2. Langsung berkomunikasi dengan file /dev/random atau /dev/urandom. Fileini isinya selalu berubah sehingga dengan menggunakan perintah `cksum`kita akan mendapatkan angka yang acak, contoh:expr `dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -d" " -f1` % 10 + 1--------------------------------------------------------------------------------------------------------1.0 APA ITU SHELL SCRIPT------------------------Dalam lingkungan unix, kata shell mengacu pada semua program yang dapatdijalankan pada command line. Jadi secara sederhana shell script merupakankumpulan perintah yang disimpan pada suatu file. Extensi umum yang digunakanuntuk shell script adalah .sh, sebenarnya hal ini tidak mutlak karenapada dasarnya unix mengabaikan extensi file.Shell juga dapat mengacu pada program yang menangani command line itusendiri dalam sistem operasi UNIX program tersebut adalah Bourne Shell(1978 - Steve Bourne) disingkat sh. Dalam sistem operasi GNU/Linux shell yangmenjadi standar adalah Bourne Again Shell(bash). Bash merupakan shell yangkompatibel dengan sh dan memiliki lebih banyak fitur.Jika anda ingin menguasai shell script tentu anda harus tahu dan hafal
  3. 3. sedikit banyak perintah dasar command line, seperti mengkopi file(cp),merename file(mv), mencetak string (echo), melihat file(cat), dan beberapaperintah dasar lainnya.Shell script juga menyediakan beberapa fitur yang tersedia pada bahasapemrograman tingkat tinggi seperti variabel, percabangan dan perulangan.Berikut ini adalah contoh sederhana penggunakan shell script:lug@stikom.edu:~$ nano hello.sh#!/bin/shecho HELLO WORLDUntuk menjalankan ada dua cara, pertama melalui program shell itu sendirilug@stikom.edu:~$ sh hello.shKedua adalah mengeksekusinya secara independen, untuk melakukan hal tersebutanda harus memberi permission execute pada file.lug@stikom.edu:~$ chmod +x hello.shlug@stikom.edu:~$ ./hello.shHELLO WORLDBaris pertama #!/bin/sh adalah MUTLAK diperlukan dan HARUS diletakkan padaBARIS PERTAMA agar file yang anda buat dikenali sistem sebagai shell script.Tanda #! sering disebut shebang operator. Tanda tersebut menandakanbahwa file tersebut adalah shell script. Sisanya misal /bin/sh adalahlokasi file binari atau program. Dalam contoh kita menggunakan programbash /bin/sh atau /bin/bash.Tanda # jika tidak terletak pada baris dan kolom paling awal akan dianggapsebagai komentar oleh shell.------------1.1 Variabel------------Pemberian variabel pada shell script bersifat dynamic typing karenashell script tidak mengenal adanya tipe data. Pada shell script dikenaldua istilah variabel yaitu SYSTEM VARIABLE(SV) dan USER DEFINED VARIABLE(UDV). SV adalah kumpulan variabel yang telah dideklarasikan secara otomatisoleh shell, sedangkan UDV adalah variabel yang kita buat sendiri. Contoh darivariabel SV adalah HOME, SHELL, RANDOM, OSTYPE, dan masih banyak yang lain.Dalam membuat variabel ada beberapa aturan yang harus dipenuhi agar variabeltersebut dianggap valid oleh shell, syntax untuk penamaan variabel adalah:nama_variabel=NILAIPerhatikan bahwa tidak ada spasi antara nama_variabel dengan tanda = jugadengan NILAI. Ini adalah suatu KEHARUSAN. Berikut adalah beberapa aturantentang penamaan variabel:1. Variabel HARUS diawali ABJAD atau _ (tidak dapat diawali angka)2. Variabel dapat terdiri dari karakter alphanumeric dan _3. Variabel bersifat CaSe SeNsItIvE4. Jika isi variabel mengandung spasi sebaiknya apit dengan tanda petik ()atau (").5. Gunakan escape character () untuk karakter non-literalseperti (, $, ?, dll)Untuk mencetak nilai dari suatu variabel digunakan tanda dollar ($) didepannama variabel, contoh:lug@stikom.edu:~$ a=Hello
  4. 4. lug@stikom.edu:~$ b=World!lug@stikom.edu:~$ echo $a$bHello World!lug@stikom.edu:~$ echo ${a}${b}Hello World!Cara yang terakhir adalah cara yang disarankan untuk menghindari kesalahandalam melakukan concat string.Jika anda ingin menyimpan output dari suatu perintah kedalam suatu variabelgunakan tanda backtick (`). Contoh, kita akan melihat isi direktori homelalu menyimpannya dalam variabel isi_home.lug@stikom.edu:~$ isi_home=`ls /home`lug@stikom.ecu:~$ echo $isi_homeDalam shel juga terdapat SPECIAL VARIABEL untuk mendapatkan exit status darisuatu program. Pada UNIX setiap program dinyatakan selesai TANPA errorapabila exit statusnya SAMA DENGAN 0. Selain itu maka program tersebutselesai tapi dengan error. Variabel tersebut adalah "$?".lug@stikom.edu:~$ ls /homelug@stikom.edu:~$ echo $?0lug@stikom.edu:~$ ls /file/ngawurlug@stikom.edu:~$ echo $?2Angka 2(TIDAK SAMA DENGAN 0) menunjukkan bahwa program ls keluar denganstatus terjadi error. Penggunaan exit sangat penting saat kita membuatshell script yang kompleks, dimana didalamnya kita banyak menggunakanprogram lain.------------------------------1.2 Command Line dan Argument------------------------------Ketika berbicara shell script kita pasti berhubungan dengan command line.Apabila berbicara tentang command line pasti berhubungan dengan argument.Apaliba berbicara tentang argument.....cukup....cukup.... nanti malah sampaisejarah kerajaan majapahit nantinya :)Perintah-perintah command line umumnya memerlukan minimal satu buah argumenagar dapat mengerjakan tugasnya secara optimal. Apa itu argument? secarasederhana argumen adalah text/character yang ditempatkan setelah nama programdengan pemisah minimal satu spasi.Contoh berikut mengilustrasikan pemberian dua argument pada perinta copy file`cp`. Perintah cp memerlukan dua argument yaitu 1)lokasi file awal2)lokasi file tujuanlug@stikom.edu:~$ cp /foo/bar /tmp/bar^ ^argument-1 argument-2Pada sistem Linux dikenal dua istilah argument short style(UNIX style) danlong style(GNU Style). Hampir setiap program command line pada linuxmenyediakan dua opsi tersebut saat memberikan argument. Penulisan argumentUNIX style biasanya hanya terdiri dari satu huruf contoh -l pada perintah`ls`.lug@stikom.edu:~$ ls -lSedangkan GNU style umumnya terdiri dari minimal sebuah kata contoh--all pada perintah `ls`.
  5. 5. lug@stikom.edu:~$ ls --allUntuk membaca argument dalam shell script digunakan special variabel yaitu$0, $1, $2,...$9. Variabel $0 adalah nama program itu sendiri.CATATAN:Untuk mengetahui jumlah argument yang diinputkan user gunakan variabel $#,sedangkan untuk mendapatkan seluruh argument gunakan variabel $*.LATIHAN:Buat sebuah shell script untuk menampilkan nama user, nama tersebutdiinput melalui argument ke-1JAWAB:lug@stikom.edu:~$ nano nama.sh#!/bin/shnama=$1echo Halo $nama, selamat datang!lug@stikom.edu:~$ chmod +x nama.shlug@stikom.edu:~$ ./nama.sh STIKOMHalo STIKOM, selamat datang!lug@stikom.edu:~$ ./nama.sh STIKOM SURABAYAHalo STIKOM, selamat datang!lug@stikom.edu:~$ ./nama.sh STIKOM SURABAYAHalo STIKOM SURABAYA, selamat datang!CATATAN:Untuk menyimpan file pada nano Tekan CTRL-O lalu jika ingin keluar tekanCTRL-X.--------------------------1.3 Perhitungan Aritmatik--------------------------Untuk melakukan perhitungan aritmatik, shell tidak memiliki kemampuanbuilt-in, tetapi meminta bantuan program lain yaitu `expr`. Program exprberfungsi untuk mengevaluasi suatu expresi baik itu perbandingan stringatau operasi aritmatik sederhana.Operator aritmatik yang disediakan expr antaran lain:+-----------+-----------------------------------------------------------+| Operator | KETERANGAN |+-----------+-----------------------------------------------------------+| + | Operator Penjumlahan contoh: expr 1 + 1 |+-----------+-----------------------------------------------------------+| - | Operator Pengurangan contoh: expr 10 - 9 |+-----------+-----------------------------------------------------------+| * | Operator Perkalian contoh: expr 10 * 10 |+-----------+-----------------------------------------------------------+| / | Operator Pembagian contoh: expr 10 / 2 |+-----------+-----------------------------------------------------------+| % | Operator Modulus contoh: expr 15 % 3 |+-----------+-----------------------------------------------------------+Selain digunakan untuk perhitungan aritmatik, perintah `expr` juga cukuphandal untuk melakukan manipulasi string, untuk lebih jelas silahkan lihathalaman manual dari expr dengan mengetikkan `man expr`.LATIHAN:Buatlah sebuah shell script untuk menghitung nilai dari argument-1 dikaliargument-2 ditambah argument-3!JAWABAN:
  6. 6. Secara matematis perhitungannya adalah(argument-1 + argument-2) + argument-3.Tidak seperti bahasa tingkat tinggi, pada shell script untuk memberiprioritas pada suatu perhitungan kita menggunakan tanda $[ ... ]. Jadiperhitungannya menjadi$[ argument-1 + argument-3 ] + argument-3Keuntungan lain ketika kita menggunakan tanda $[...] adalah kita tidak perlumelakukan escaping character pada tanda perkalian(*). Berikut ini adalahshell scriptnya.lug@stikom.edu:~$ nano hitung.sh#!/bin/shbil1=$1bil2=$2bil3=$3echo -n "HASIL DARI $bil1 * $bil2 + $bil3 = "echo `expr $[ $bil1 * $bil2 ] + $bil3`lug@stikom.edu:~$ chmod +x hitung.shlug@stikom.edu:~$ ./hitung.sh 10 10 10HASIL DARI 10 * 10 + 10 = 110---------------1.4 User Input---------------Selain melalui argument pada command line, cara lain untuk mendapatkan inputdari user adalah melalui STANDARD INPUT (STDIN). Dimana user langsungmengetikkan isi dari suatu nilai yang program inginkan.Untuk mendapatkan input dari user dapat digunakan perintah `read`. Perintahread tidak begitu berguna jika kita tidak menyimpan hasil inputan tersebutkedalam sebuah variabel. Untuk menyimpan hasil inputan kita harus memberisatu argument pada perintah read. Argument inilah yang akan menyimpan nilaiyang diinputkan. Contoh,lug@stikom.edu:~$ read a10lug@stikom.edu:~$ read b5lug@stikom.edu:~$ expr $a * $b50LATIHAN:Sama dengan latihan sebelumnya, hanya saja kali ini gunakan perintah readuntuk membaca setiap bilangan yang diinputkan user.JAWABAN:lug@stikom.edu:~$ nano hitung2.sh#!/bin/sh# deklarasikan variabel dengan nilai NULLbil1=bil2=bil3=echo -n Masukkan bilangan-1: read bil1echo -n Masukkan bilangan-2: read bil2
  7. 7. echo -n Masukkan bilangan-3: read bil3echo echo -n "Hasil dari $bil1 * $bil2 + $bil3 = "echo `expr $[ $bil1 * $bil2 ] + $bil3`lug@stikom.edu:~$ chmod +x hitung2.shlug@stikom.edu:~$ ./hitung2Masukkan bilangan-1: 10Masukkan bilangan-2: 10Masukkan bilangan-3: 10Hasil dari 10 * 10 + 10 = 110----------1.5 Piping----------Piping merupakan penggabungan dua atau lebih perintah dimana output dariperintah sebelumnya digunakan sebagai input untuk perintah selanjutnya.Simbol yang digunakan untuk membatasi perintah yang satu dengan yang lainadalah tanda pipe "|". Berikut adalah beberapa contoh sederhana penggunaanpiping pada command line.lug@stikom.edu:~$ cat /etc/passwd | wc -llug@stikom.edu:~$ cat /etc/passwd | sort -rlug@stikom.edu:~$ cat /etc/passwd | grep "/bin/sh/" | wc -l---------------1.6 Redirection---------------Secara umum jika kita ingin mengambil inputan maka kita mengambil dariSTANDARD INPUT (STDIN) yaitu keyboard. Sedangkan hasil output program yangtercetak di layar monitor kita disebut STANDARD OUTPUT (STDOUT). Hampir samadengan STDOUT, error yang dihasilkan program juga ditampilkan lewat monitorbiasa disebut STANDARD ERROR (STDERR). Setiap standard mempunyai kode filedescriptor sendiri-sendiri diantaranya:- STDIN => File Descriptor: 0- STDOUT => File Descriptor: 1- STDERR => File Descriptor: 2Dengan mengetahui file descriptor tersebut kita dapat melakukan redirection(pengalihan), misal dari dari STDOUT menjadi STDERR atau sebaliknya.Terdapat tiga simbol untuk melakukan redirection diantarnya:1.Simbol: ">"Keterangan: Simbol tersebut akan meredirect output ke dalam suatu file. Jikafile tersebut belum ada maka akan buat secara otomatis, jikafile sudah ada ada maka isinya akan di-overwrite/ditimpa.2.Simbol: ">>"Keterangan: Hampir sama dengan ">" hanya saja jika file sudah ada, maka fileisi tersebut tidak dioverwrite tetapi ditambah.3.Simbol: "<"Keterangan: Simbol "<" artinya input tidak diambil dari STDIN melainkan darisebuah file.Sebagai contoh sederhana, ketika anda mengetikkan perintah `ls /nama/dir`maka secara default program ls akan menampilkan output ke STDOUT yaitulayar monitor. Jika kita ingin meredirect output yang dihasilkan kedalam
  8. 8. sebuah file maka kita dapat menggunakan simbol ">" atau ">>". Intinya segalaSTDOUT dapat dilakukan redirect.lug@stikom.edu:~$ echo DAFTAR ISI FOLDER LUG > /tmp/data.txtlug@stikom.edu:~$ ls /home/lugstikom >> /tmp/data.txtUntuk contoh "<" kita akan menggunakan program tr, program ini dapat kitagunakan untuk manipulasi teks. Input yang akan kita berikan ke tr adalahdari sebuah file, nantinya teks yang ada pada file tersebut akan di-UPPERCASE semua.lug@stikom.edu:~$ echo stikom surabaya > /tmp/stikom.txtlug@stikom.edu:~$ tr "[a-z]" "[A-Z]" < /tmp/stikom.txtSTIKOM SURABAYASelain meredirect ke file kita juga dapat melakukan redirect ke filedescriptor lain. Misal dari STDOUT ke STDERR atau sebaliknya.lug@stikom.edu:~$ rm /file/ngawur 2>&1lug@stikom.edu:~$ ls / 1>&2-----------1.7 FUNGSI-----------Hampir sama dengan bahasa pemrograman tingkat tinggi, pada shell script jugadikenal istilah fungsi. Dimana dengan adanya fungsi kita dapat membagikode kita ke dalam sub-sub yang lebih kecil. Hal ini sangat berguna jika kitamembangun sebuah program shell script yang cukup kompleks. Syntax penggunaanfungsi pada shell script adalah:function nama-fungsi(){perintah......return}LATIHAN:Buatlah shell script untuk mencetak banner seperti output berikut:lug@stikom.edu:~$ ./fungsi.sh==============================SELAMAT DATANG DI LUG-STIKOM==============================HARI INI: Rabu, 14-05-2008Tulisan "SELAMAT blabla..." diletakkan dalam fungsi tersendiri, begitu pulafungsi untuk mencetak tanggal. Fungsi mencetak tanggal nantinya akandipanggil didalam fungsi yang mencetak tulisan "SELAMAT...".JAWAB:lug@stikom.edu:~$ nano fungsi.sh#!/bin/shfunction indo_date() {echo `date +"%A, %d-%m-%Y"`return}function welcome() {echo "=============================="echo " SELAMAT DATANG DI LUG-STIKOM"echo "=============================="
  9. 9. echo -n "HARI INI: "indo_datereturn}welcomelug@stikom.edu:~$ chmod +x fungsi.shApakah fungsi pada shell script juga menerima parameter? YA tapi dengansedikit "nyeleneh". Kenapa? jika pada bahasa pemrograman umumnya parameterdiletakkan diantara tanda (), tidak demikian dengan shell script. Carapengambilan parameter pada shell script sama dengan pengambilan argumentpada program shell script itu sendiri. Jadi kita dapat menggunakan variabel$*, $#, $0, $1, dan seterusnya.Dibawah ini adalah contoh pembuatan fungsi untuk mengubah text menjadiUPPER-CASE.lug@stikom.edu:~$ nano fungsi2.sh#!/bin/shfunction toUpperCase() {teks=$*echo $teks | tr "[a-z]" "[A-Z]"return}echo -n "Masukkan teks(lowercase): "read footoUpperCase $foolug@stikom.edu:~$ chmod +x fungsi2.shlug@stikom.edu:~$ ./fungsi2.shMasukkan teks(lowercase): ini lower caseINI LOWER CASEPada contoh diatas kita menggunakan variabel $* untuk mengambil parameterbukan $1 atau $2 dkk karena yang akan diinputkan user kemungkinan mengandungdua kata atau lebih. Jadi jika kita menggunakan variabel $1 maka yang terbacahanya kata pertama. Untuk itu kita gunakan variabel $* yang akan membacasemua parameter.---------------2.0 Percabangan---------------Dengan menggunakan percabangan/branching maka kita dapat mengontrol alurdari shell script yang kita buat. Hal ini memungkinkan kita untuk menulisprogram yang sangat kompleks pada shell script. Syntax penggunaan percabanganpada shell script adalah:if kondisithen......fi-----------if kondisithen......else......fi-----------
  10. 10. if kondisi1then......elif kondisi1......elif kondisi-n......else......fi--------------case $variabel inpattern1) perintah...perintah;;pattern1) perintah...perintah;;*) perintah...perintah;;esacUntuk melakukan perbandingan kondisi pada data kita dapat menggunakanperintah `test`(man test) atau meletakkannya dalam blok [ ].Berikut ini adalah operator yang dapat digunakan untuk membandingkan dataNUMERIK:+------------+-----------------------------------+| OPERATOR | KETERANGAN |+------------+-----------------------------------+| -eq | SAMA DENGAN (=) |+------------+-----------------------------------+| -ne | TIDAK SAMA DENGAN (!=) |+------------+-----------------------------------+| -gt | LEBIH BESAR (>) |+------------+-----------------------------------+| -ge | LEBIH BESAR ATAU SAMA DENGAN (>=) |+------------+-----------------------------------+| -lt | KURANG DARI (<) |+------------+-----------------------------------+| -le | KURANG DARI ATAU SAMA DENGAN (<=) |+------------+-----------------------------------+-------------------2.1 if...then...fi------------------lug@stikom.edu:~$ nano if-then-fi.sh#!/bin/shnum_arg=$#bil1=$1bil2=$2function help() {echo Penggunaan: echo "$0 bil1 bil2"echo
  11. 11. echo Dimana bil1 dan bil2 harus angka genap.return}function cek_arg() {if test $num_arg -lt 2thenhelpexit 1 # keluar dengan exit status 1fiif [ `expr $bil1 % 2` -ne 0 ] ; thenhelpexit 1fiif [ `expr $bil2 % 2` -ne 0 ]thenhelpexit 1fireturn}cek_argecho Argument anda adalah $bil1 dan $bil2exit 0lug@stikom.edu:~$ chmod +x if-then-fi.shlug@stikom.edu:~$ ./if-then-fi.shPenggunaan:./if-then-fi.sh bil1 bil2Dimana bil1 dan bil2 harus angka genap.lug@stikom.edu:~$ echo $?1lug@stikom.edu:~$ ./if-then-fi.sh 2 4Argument anda adalah 2 dan 4lug@stikom.edu:~$ echo $?0Perintah exit pada shell script dapat digunakan untuk keluar langsung dariprogram. Pada contoh diatas, jika terdapat kesalahan kita keluar dengan exitstatus 1( bukan 0 ) artinya program selesai tapi dengan error. Error statustidak harus 1 tapi bisa sembarang angka asal BUKAN 0.-------------------------2.2 if...then...else...fi-------------------------Statement pada blok else akan dieksekusi jika kondisi pada pada blok ifbernilai false.lug@stikom.edu:~$ nano if-else.sh#!/bin/shif test $1 -ge 0thenecho "Argument bernilai positif"elseecho "Argument bernilai negatif"filug@stikom.edu:~$ chmod +x if-else.shlug@stikom.edu:~$ ./if-else 10Argument bernilai positiflug@stikom.edu:~$ ./if-else -2
  12. 12. Argument bernilai negatif--------------------------------2.3 if...then...elif...else...fi--------------------------------Statement elif digunakan jika kita ingin memilih lebih dari dua kondisi.lug@stikom.edu:~$ nano if-elif.sh#!/bin/shpilih=teks="Sistem operasi pilihan anda adalah "echo "Pilih Sistem Operasi Anda: "echo "1. Linux"echo "2. Mac OS"echo "3. FreeBSD"echo "4. Lainnya"echo ""echo -n "Masukkan pilihan: "read pilihif [ $pilih = "1" ] ; thenecho "${teks}Linux"elif [ $pilih = "2" ] ; thenecho "${teks}Mac OS"elif [ $pilih = "3" ] ; thenecho "${teks}FreeBSD"elseecho "Anda memilih sistem operasi lain"filug@stikom.edu:~$ chmod +x if-elif.shlug@stikom.edu:~$ ./if-elif.shPilih Sistem Operasi Anda:1. Linux2. Mac OS3. FreeBSD4. LainnyaMasukkan pilihan: 3Sistem operasi pilihan anda adalah FreeBSD-------------2.5 Nested If-------------Pada shell script anda juga dapat meletakkan blok if didalam if atau istilah"kerennya" nested if. Berikut adalah contoh sederhana penggunaannya.lug@stikom.edu:~$ nano nested-if.sh#!/bin/bashbil=$1if [ `expr $bil % 2` -eq 0 ] ; thenif [ $bil -ge 0 ] ; thenecho "Angka yang anda masukkan genap dan >= 0"elseecho "Angka yang anda masukkan genap dan < 0"fielseif [ $bil -ge 0 ] ; thenecho "Angka yang anda masukkan ganjil dan >= 0"elseecho "Angka yang anda masukkan ganjil dan < 0"fi
  13. 13. filug@stikom.edu:~$ sh nested-if.sh 10Angka yang anda masukkan genap dan >= 0lug@stikom.edu:~$ sh nested-if.sh -5Angka yang anda masukkan ganjil dan < 0--------------------2.6 case...in...esac--------------------Perintah case hampir sama dengan if-then-elif-else-fi karena dapat memilihdari banyak kondisi. Sebagian orang lebih suka menggunakan case...esacdibanding multi level-if karena lebih mudah dibaca.Pada contoh dibawah ini adalah modifikasi dari contoh if-then-elif-else-fiyang pernah dibahas sebelumnya menggunakan case...in...esac.lug@stikom.edu:~$ nano case.sh#!/bin/shpilih=teks="Sistem operasi pilihan anda adalah "echo "Pilih Sistem Operasi Anda: "echo "1. Linux"echo "2. Mac OS"echo "3. FreeBSD"echo "4. Lainnya"echo ""echo -n "Masukkan pilihan: "read pilihcase $pilih in"1") echo "${teks}Linux";;"2") echo "${teks}Mac OS";;"3") echo "${teks}FreeBSD";;*) echo "Anda memilih sistem operasi lain";;esaclug@stikom.edu:~$ sh case.shPilih Sistem Operasi Anda:1. Linux2. Mac OS3. FreeBSD4. LainnyaMasukkan pilihan: 1Sistem operasi pilihan anda adalah Linux--------------------------2.7 Menangkap Error Status--------------------------Seperti yang pernah dijelaskan sebelumnya bahwa untuk melihat error statusdari suatu perintah kita gunakan special variable "$?". Error status inidapat kita gunakan untuk melihat apakah perintah yang kita jalankan berjalantanpa error atau tidak. Error status terdiri dari dua flag yaitu:+-----------+-----------------+| NO. ERROR | STATUS PROGRAM |+-----------+-----------------+| 0 | OK |+-----------+-----------------+| !=0 | TERJADI ERROR |+-----------+-----------------+NOTE: != artinya TIDAK SAMA DENGAN
  14. 14. Setelah anda mengetahui bagaimana menggunakan percabangan pada shell scriptmaka kita dapat menggunakanya untuk menangkap error status yang dihasilkanoleh suatu program.lug@stikom.edu:~$ nano error-status.sh#!/bin/shperintah=`rm /file/ngawur 2>/dev/null`if [ $? -eq 0 ] ; thenecho "PERINTAH SUKSES, EXIT STATUS: $?"elseecho "PERINTAH GAGAL, EXIT STATUS: $?"fils / 1>/dev/nullif [ $? -eq 0 ] ; thenecho "PERINTAH SUKSES, EXIT STATUS: $?"elseecho "PERINTAH SUKSES, EXIT STATUS: $?"filug@stikom.edu:~$ sh error-status.shPERINTAH GAGAL, EXIT STATUS: 1PERINTAH SUKSES, EXIT STATUS: 0Pada contoh diatas STDERR dan STDOUT semuanya di-redirect ke /dev/null. Halini agar output perintah rm dan ls tidak muncul dilayar. /dev/null adalahsemacam file "blackhole" yang dapat kita gunakan untuk mengririm semua outputyang tidak kita inginkan.CATATAN:Variabel $? hanya berisi error status dari perintah yang TERAKHIR KALIdijalankan.----------------------------------3.0 Perulangan dalam Shell Script----------------------------------Perbedaan utama kita, manusia dengan komputer adalah jika kita melakukansuatu pekerjaan berulang-ulang maka rasa bosan pasti datang. Tidak demikiandengan komputer, komputer melakukan hal-hal yang sama sebanyak 1 juta kalipun dia akan dengan "senang hati" melakukannya.Perulangan atau looping adalah pengeksekusian suatu blok perintah selamakondisi yang digunakan masih bernilai TRUE. Saya yakin anda pernah disuruhorang tua anda waktu kecil untuk berhitung 1 - 10. Dimana jika sudah melebihi10 anda harus berhenti berhitung karena kondisi meminta anda untuk berhentipada saat mencapai sepuluh.Analogi sederhana diatas dapat menggambarkan bagaimana suatu looping bekerja.Dalam shell script terdapat dua tipe perulangan yaitu:- for loop- for...do...done- for...in...do...done- while loopUmumnnya perulangan `for` digunakan apabila kita sudah tahu batas perulanganyang akan kita lakukan. Syntax penulisannya adalah:for nama_variabel in listdo......
  15. 15. done-------------------------for (( expr1; expr2; expr3 ))do......done-------------------3.1 for...do...done-------------------Berikut adalah contoh untuk penggunaan for...do...done.lug@stikom.edu:~$ nano for.sh#!/bin/shfor (( i=0; i<=5; i++ ))doecho "PENALTI KE-$i GOL"!!!donelug@stikom.edu:~$ sh for.shPENALTI KE-1 GOL!!!PENALTI KE-2 GOL!!!PENALTI KE-3 GOL!!!PENALTI KE-4 GOL!!!PENALTI KE-5 GOL!!!------------------------3.2 for...in...do...done------------------------Pada for-in terdapat perbedaan cara penggunaan, pada for-in kita melakukanperulangan berdasarkan data yang ada pada list. Dimana setiap list dipisahkanoleh tanda spasi. Berikut adalah contohnya:lug@stikom.edu:~$ nano for-in.sh#!/bin/shfor i in 1 2 3 4 5 ; doecho -n "$i "doneecho for abjad in "A B C D E" ; doecho -n "$abjad "doneecho lug@stikom.edu:~$ sh for-in.sh1 2 3 4 5A B C D E---------------------3.3 while...do...done---------------------Bentuk perulangan lain yang juga sering digunakan adalah while. Perulanganmenggunakan while lebih difokuskan jika kita memang belum mengetahui batasperulangan yang dilakukan. Syntax penggunaan while adalah sebagai berikut:while [ kondisi ]do......doneBerikut adalah contoh penggunaannya:
  16. 16. lug@stikom.edu:~$ nano while.sh#!/bin/shi=5while [ $i -ge 1 ]doecho "$i Mod 2 = "`expr $i % 2`i=`expr $i - 1`donelug@stikom.edu:~$ sh while.sh5 Mod 2 = 14 Mod 2 = 03 Mod 2 = 12 Mod 2 = 01 Mod 2 = 1-------------------------3.4 Percabangan Bersarang-------------------------Suatu percabangan dapat berisi perbacabangan yang lain misalnya for didalamfor atau while didalam while atau kombinasi keduanya. Nah bentuk inilah yangdinamakan percabangan bersarang(nested loop). Jumlah banyaknya nested loopdapat dikatakan tidak terbatas.Anda sebagai pemrogram bebas dapat memasukkansebanyak mungkin percabangan bersarang, tapi tentu dengan berbagaipertimbangan teknis. Umumnya maksimal perbacangan bersarang yang seringpenulis gunakan adalah tiga, namun pada beberapa kondisi bisa lebih dari itu.Jadi itu semua relatif terhadap anda sebagai pemrogram dan kondisi yanganda hadapi.Contoh berikut menunjukkan percabangan bersarang menggunakan for dengankedalaman dua level.lug@stikom.edu:~$ nano nested-for.sh#!/bin/shfor (( i=1; i<=5; i++ ))dofor (( j=1; j<=5; j++ ))doecho -n "$i "doneecho ""donelug@stikom.edu:~$ sh nested-for.sh1 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 45 5 5 5 5---------------------4.0 Soal-soal Latihan---------------------4.1 Jawab:4.2 Jawab:4.3 Jawab:4.4 Jawab:4.5 Jawab:---------REFERENSI---------
  17. 17. http://www.freeos.com/guides/lsst/http://en.wikipedia.org/wiki/Shell_scripthttp://ilmukomputer.com/2007/03/06/membaca-proses-dengan-shell-script/

×