Anda di halaman 1dari 39

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
chmod untuk 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 other
users (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:
variables script anda biasanya sering menyimpan
nilai untuk digunakan kemudian, variabel shell
merupakan nama simbolik yang dapat diakses dari
memori
 Operators:
Operators Script Shell mendukung banyak operator,
termasuk operasi matematik
 Logic structures:
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.
$ set mydir=`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

Anda mungkin juga menyukai