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: 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.
$ 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 = $ /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