390 likes | 539 Views
Shell Programming. Oleh: Idris Winarno. My first Shell Script. vi myfirstscript.sh #! /bin/csh set directory=`pwd` echo The date today is `date` echo The current directory is $directory chmod u+x myfirstscript.sh myfirstscript.sh. UNIX Shell Scripts.
E N D
Shell Programming Oleh: Idris Winarno
My first Shell Script • vi myfirstscript.sh #! /bin/csh set directory=`pwd` echo The date today is `date` echo The current directory is $directory • chmod u+x myfirstscript.sh • myfirstscript.sh
UNIX Shell Scripts • UNIX shell scripts adalah suatu sekumpulan teks yang berisi perintah-perintah UNIX yang berurutan • Seperti halnya bahasa pemrograman, programmer membuat script dengan text editor • Shell script tidak membutuhkan compiler • Hal ini terjadi karena UNIX shell seolah-olah bertingkahlaku seperti interpreter saat membaca script dari file
UNIX Shell Scripts (Cont’d) • Karena bertingkah laku seperti interpreter maka statement yang ada pada script akan langsung di translasikan pada instruksi executable dan menyebabkannya untuk langsung menjalankan executable tersebut • Setelah anda menulis shell script, anda akan memberitahukan pada OS bahwa program dapat dijalankan. • Hal ini dapat dilakukan dengan menggunakan perintah chmoduntuk merubah mode dari file.
UNIX Shell Scripts (cont’d) • Perintah chmod memberi tahu komputer siapa saja yang berhak menggunakan file tersebut: owner (u), group (g), atau otherusers (o) • Program Shell berjalan sedikit kurang cepat dari pada compiled programs, karena shell harus menterjemahkan masing-masing perintah UNIX sebelum mengeksekusinya
Pemrograman Shell Yang umum digunakan pada kebanyakan varian UNIX adalah: • Bourne Shell (sh), shell pertama yang dibuat oleh UNIX • Bourne Again Shell (bash), dibuat oleh programmer dari Free Software Foundation, open source shell dari GNU • Korn Shell (ksh), dibuat oleh David Korn, pembuat dari Bourne shell, tidak disebarluaskan. • C Shell (csh), dibuat oleh Bill Joy, pembuat vi, mengimplementasikan struktur bahasa C. • Terminal Based C Shell (tcsh), versi lanjut dari the Berkeley UNIX C shell (csh)
Pemrograman Shell • Semua versi linux menggunakan Bash shell (Bourne Again Shell) sebagai shell standarnya • Semua sistem system menyertakan C shell dan Bourne shell.
Pemrograman Shell • Fitur-fitur programming dari UNIX shell: • Shell variables • Operators • Logic structures
Pemrograman Shell • Fitur-fitur programming dari UNIX shell: • Shell variables: script anda biasanya sering menyimpan nilai untuk digunakan kemudian, variabel shell merupakan nama simbolik yang dapat diakses dari memori • Operators: Script Shell mendukung banyak operator, termasuk operasi matematik • Logic structures: Script Shell mendukung sequential logic (untuk menjalankan perintah serial), decision logic (untuk percabangan), looping logic (untuk proses looping), dan case logic (untuk proses seleksi)
Pemrograman Shell • Fitur-fitur programming dari UNIX shell: • Shell variables • Operators • Logic structures
Variables • Variables merupakan nama simbolik yang merepresentasikan nilai yang disimpan di memori • Tiga tipe dari variabel adalah configuration variables, environment variables, dan shell variables • gunakan configuration variables untuk menyimpan informasi tentang setup dari sistem operasi dan jangan merubahnya. • Anda dapat merubah environment variables dengan nilai inisial
Variables (Cont’d) • Variabel ini, dimana UNIX membacanya pada saat anda login, menetapkan banyak karakteristik dari sesi anda • Shell variables adalah variabel yang di buat pada script • Environment dan configuration variables memperlihatkan nama standar, seperti HOME, PATH, SHELL, USERNAME, dan PWD
Variables (Cont’d) Untuk melihat daftar dari environment variables: $ printenv atau: $ printenv | more
Variables (Cont’d) 1. Ciri khas Environment Variables • HOME: pathname of your home directory • PATH: directories where shell is to look for commands • USER: your user name • PWD: your current working directory • MAIL: pathname of your system mailbox • SHELL: pathname of your shell 2. Isi dari variable dapat diakses menggunakan ‘$’: Misal: $ echo $HOME
Variables (Cont’d) • Cara pemberian variabel adalah variable=value (kecuali pada C shell). $ x=37; echo $x $ 37 $ unset x; echo $x • C shell menggunakan statement “set”. $ set x = 37 • Anda dapat meng-set a pathname atau variabel perintah atau menganti set dari variable. $ setmydir=`pwd`; echo $mydir
Variables (Cont’d) • Untuk menulis daftar: $ set Y = (UNL 123 CS251) • Untuk meng-set elemen daftar: $ set Y[2] = HUSKER • Untuk melihat isi dari daftar: $ echo $Y[2]
Variables (Cont’d) • vi myinputs.sh #! /bin/csh echo Total number of inputs: $#argv echo First input: $argv[1] echo Second input: $argv[2] • chmod u+x myinputs.sh • myinputs.sh HUSKER UNL CSE
Pemrograman Shell • Fitur-fitur programming dari UNIX shell: • Shell variables • Operators • Logic structures
Shell Operators • Operator dari Bash shell di bagi menjadi 3 kelompok: operator definisi dan evaluasi, operator aritmatik, dan operator redirect dan piping.
Operator Aritmetik • expr mendukung operator berikut ini: • arithmetic operators: +,-,*,/,% • comparison operators: <, <=, ==, !=, >=, > • boolean/logical operators: &, | • precedence is the same as C, Java
Operator Aritmetik (contoh) • vi math.sh #!/bin/csh set count=5 set count=`expr $count + 1` echo $count • chmod u+x math.sh • math.sh
Shell Programming • Fitur-fitur programming dari UNIX shell: • Shell variables • Operators • Logic structures
Shell Logic Structures Empat struktur logika dasar: • Sequential logic • Decision logic • Looping logic • Case logic
Sequential Logic • Statemen Sequential logic adalah perintah-perintah yang akan dieksekusi seperti apa yang terlihat terutur pada program • Pemberhentian dari urutan program adalah jika adanya intruksi percabangan.
Decision Logic • Decision logic membuat program kita dapat dieksekusi pada kondisi tertentu • if statement adalah kontrol keputusan utama pada jenis logika ini.
Decision Logic (cont’d) • if-then if ( expr ) simple-command • if-then-else if ( expr ) then command-set-1 [else command-set-2] endif
Decision Logic (cont’d) • Contoh #!/bin/csh if ($#argv != 2) then echo $0 needs two parameters! echo You are inputting $#argv parameters. else set par1 = $argv[1] set par2 = $argv[2] endif
Decision Logic (cont’d) Contoh: #! /bin/csh # number is positive, zero or negative echo "enter a number:" set number = $< if ( $number < 0 ) then echo "negative" else if ( $number == 0 ) then echo zero else echo positive endif
Decision Logic (cont’d) Contoh: #!/bin/csh if {( grep UNIX $argv[1] > /dev/null )} then echo UNIX occurs in $argv[1] else echo No! echo UNIX does not occur in $argv[1] endif
Looping Logic • Pada looping logic, perulangan akan dilakukan sampai dengan kondisi tertentu tercapai • Ada dua jenis mekanisme perulangan: for dan while • Gunakan perulangan for untuk proses perulangan dengan nilai jangkauan tertentu.
While Loop • Cara lain dari proses looping adalah adalah menggunakan statement while • Statement while statement digambarkan dengan suatu loop yang berkelanjutan terus menerus sampai dengan kondisi tertentu terpenuhi • Selama statement dalam tanda kurung bernilai trua maka statement yang ada diantara do dan done akan terus di ulang-ulang
Looping Logic while ( expr ) command_set end foreach var ( worddlist ) command_set end
Looping Logic Program: #!/bin/csh foreach person (Bob Susan Joe Gerry) echo Hello $person end Output: Hello Bob Hello Susan Hello Joe Hello Gerry
Looping Logic • Penambahan nilai integer dari 1 s/d 10 #!/bin/csh set i=1 set sum=0 while ($i <= 10) echo Adding $i into the sum. set sum=`expr $sum + $i` set i=`expr $i + 1` end echo The sum is $sum.
Switch Logic • Struktur dari switch logic mempermudah proses seleksi dari pencocokan ketika melakukan proses pemilihan • Memperbolehkan program untuk mengambil suatu tindakan berdasar pada nilai suatu variabel
Switch Logic switch ( var ) case string1: command_set_1 breaksw case string2: command_set_2 breaksw default command_set_3 endsw
Switch Logic #!/bin/csh if ($#argv == 0 ) then echo "No arguments supplied...exiting" else switch ($argv[1]) case [yY]: echo Argument one is yes. breaksw case [nN]: echo Argument one is no. breaksw default: echo Argument one is neither yes nor no. breaksw endsw endif
Kesimpulan • A high-level language harus di konversi menjadi low-level (machine) language sebelum komputer mengeksekusinya • Shell menterjemahkan script UNIX shell • Script UNIX shell, dibuat dengan vi atau aplikasi editor lainnya, berisikan instruksi dimana kita tidak perlu membuatnya karena intruksi tersebut telah ada pada sistem operasi.
Kesimpulan (cont’d) • Linux shells bersalar dari UNIX Bourne, Korn, dan C shells • UNIX terdiri dari 3 jenis tipe variabel: • Configuration • Environment • Shell • Shell mendukung banyak operator, termasuk sejumlah operasi matematika. • Struktur logic yang ada pada shell diantaranya adalah sequential, decision, looping, dan case