LAPORAN PRAKTIKUM 6 - Pemrograman Shell Bagian II
LAPORAN PRAKTIKUM 6
FORMAT DAN PERINTAH DASAR
LINUX
Daniel Putra Ariyanto (1903421003)
BM 5B
BROADBAND MULTIMEDIA
TEKNIK ELEKTRO
POLITEKNIK NEGERI JAKARTA
TAHUN AJARAN 2021/2022
I.
Tujuan Praktikum
Setelah mempelajari materi dalam bab ini, mahasiswa
diharapkan mampu:
1.
Mempelajari elemen dasar shell script
2.
Membuat program shell interaktif
3.
Menggunakan parameter dalam program
4.
Mempelajari test kondisi serta operator logic yang terkait dengan
intruksi test
5.
Mengenal variable built-in dari shell
6.
Membuat aplikasi dengan shell menggunakan konstruksi if-then-else
7.
Menggunakan struktur case – esac.
8.
Loop dengan while, for, do while.
9.
Membuat fungsi dan mengetahui cara memanggil fungsi tersebut.
II.
Dasar Teori
1.
SHELL SCRIPT
Shell script
dibuat dengan editor teks (ASCII editor) dan umumnya diberikan ekstensi”.sh”.
shell script selalu diawali dengan komentar, yang dimulai dengan tanda #,
disambung dengan ! dan nama shell yang digunakan. Contoh:
#!/bin/sh (1)
# Program shell (2)
#
Var1=x (3)
Var2=8
(1) Awal dari program
shell, komentar awal ini akan dibaca oleh system, kemudian system mengaktifkan
program shell (/bin/sh) yang tertera ditempat tersebut. Program shell dapat
dipilih, misalnya /bin/csh, /bin/ksh dan lainnya.
(2) Adalah komentar,
sebagai dokumentasi, baris ini akan diabaikan oleh program shell.
(3) Penggunaan
variable (assignment), tidak boleh ada spasi diantara nama variable dan
konstanta.
2.
VARIABEL
Variable shell adalah variable
yang dapat mempunyai nilai berupa nilai String.Tata penulisan variable adalah
sebagai berikut :
nama_var = nilai_var
Variable harus dimulai dengan
alfabet, disusul dengan alfanumerik dan karakter lain. Variabel dapat ditulis
dalam huruf kecil atau huruf besar atau campuran keduanya. Shell membedakan
huruf besar dan huruf kecil (case sensitive), contoh :
VPT=poltek
i=5
Pemberian nilai variable tidak
boleh dipisahkan dengan spasi, karena shell akan menganggap pemisahan tersebut
sebagai parameter, contoh :
VPT =poltek ##error
VPT= poltek ##error
Untuk melihat nilai/isi dari
sebuah variable, gunakan tanda $ di depan nama variable tersebut. Pada shell,
instruksi echo dapat menampilkan isi variable tersebut, contoh :
VPT=poltek
echo $VPT
Gaji=450000
echo $Gaji
echo $VPT $Gaji
Bila menggunakan string yang terdiri
dari lebih dari satu kata, maka string tersebut harus berada dalam tanda kutip
atau apostrof, contoh :
VPT=poltek
VPT2=”politeknik negeri jakarta”
3.
MEMBACA KEYBOARD
Nilai variable
dapat diisi melalui keyboard (stdin) dengan instruksi read.
4.
PARAMETER
Sebuah program
shell dapat mempunyai parameter sebanyak 9 buah dan direpresentasikan melalui
variable khusus yaitu variable $!, $2, $3, $4, $5, $6, $7, $8, $9. Nama program
shell || (nama script) direpresentasikan melalui variable $0. Jumlah parameter
dinyatakan sebagai$#. Bila tidak memberikan parameter maka nilai $#adalah 0.
Shell variable $* menyatakan seluruh string yang menjadi parameter / argument
sebuah script ($@ mempunyai arti sama). $$ menyatakan nomor proses id/pid dari
script yang dijalankan. Pid ini akan terus berubah (umumnya) menaik, setiap
kali proses berjalan.
5.
STATUS EXIT
Setiap program
setelah selesai dieksekusi akan memberikan informasi melalui variable special
$?. Indikasi yang diberikan adalah :
·
Bila program berakhir denga sukses, $?=0
·
Bila program berakhir dengan error, $?tidak samadengan
0. nilai dari status exit dapat dilihat melalui instruksi echo $?
6.
KONSTRUKSI IF
If akan mengeksekusi instruksi awal, dan exit
status dari instruksi tersebut akan menjadi kondisi. Bila 0, maka instruksi
selanjutnya masuk ke dalam blok then. Bila tidak 0, maka alur program diteruskan setelah
kata kunci fi.
7.
KONSTRUKSI IF THEN ELSE
Bila status exit tidak sama dengan 0, maka kondisi
menjadi FALSE dan instruksi setelah else akan dijalankan.
8.
INSTRUKSI TEST
Instruksi test
digunakan untuk memeriksa kondisi dari sebuah ekspresi. Ekspresi terdiri dari
factori dan operator yang dipisahkan oleh spasi. Hasil test akan memberikan
nilai berupa status exit, yaitu 0 bila ekspresi sesuai, bila tidak maka
hasilnya adalah tidak sama dengan nol.
·
Operator untuk test
·
Test untuk files dan direktori
Untuk memudahkan pembacaan (readability), test dapat
ditulis dengan :
[ ekspresi ]
[ sebenarnya adalah nama lain dari test,bedanya
[ akan mencari kurung penutup ] pada akhir ekspresi yang harus dipisahkan oleh spasi.
9.
LOGICAL && DAN || (SHELL LEVEL)
Notasi
&& dan || digunakan untuk menggabungkan instruksi shell sebagai
alternative dari if then else. Notasi && dan || sering ditemukan pada
shell script system administrator untuk menjalankan routine dari system
operasi.
·
instruksi1 && instruksi2
Shell akan mengeksekusi instruksi1, dan bila exit status instruksi1 adalah false, maka
hasil dari AND tersebut sudah pasti sama dengan FALSE, sehingga instruksi2
tidak mempunyai pengaruh lagi. Oleh karna itu instruksi2 tidak dijalankan. Sebaliknya
bila hasil instruksi1 adalah true/0, maka
instruksi2 dijalankan.
·
instruksi1 || instruksi2
Shell akan mengeksekusi instruksi1, dan bila exit status adalah
TRUE(0), hasil dari operasi OR tersebut sudah pasti menghasilkan TRUE, terlepas
dari hasil eksekusi instruksi2. Oleh karena itu instruksi2 tidak perlu
dijalankan. Bila hasil instruksi1 adalah FALSE, maka instruksi2 akan dijalankan.
10. OPERATOR BILANGAN BULAT UNTUK TEST
Untuk membandingkan 2 buah
bilangan, test memerlukan operator yang berbeda dengan string.
11. OPERATOR LOGICAL
(TEST LEVEL)
Logical operator terdiri dari
AND, OR, dan NOT. Operator ini menggabungkan hasil ekspresi sebagai berikut :
NOT: symbol !
AND: symbol –a
OR: symbol –o
12. KONSTRUKSI IF THEN
ELSE IF
Bila status exit
tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah else akan
dijalankan.
13. HITUNGAN
ARITMATIKA
Tipe dari variable SHELL hanya
satu yaitu STRING. Tidak ada tipe lain seperti Numerik, Floating, Boolean ata u
lainnya. Akibatnya variable ini tidak dapat membuat perhitungan aritmetika,
misalnya :
A=5
B=$A +1 ## error
UNIX menyediakan utilitas yang
bernama expr yaitu suatu utilitas yang melakukan aritmetika sederhana.
14. INSTRUKSI EXIT
Program dapat
dihentikan (terminated/selesai) dengan intruksi exit. Sebagai nilai default
program tersebut akan memberikan status exit 0.
15. KONSTRUKSI CASE
Case digunakan untuk
menyederhanakan pemakaian if yang berantai, sehingga dengan case, kondisi dapat
dikelompokkan secara lo gis dengan lebih jelas dan mudah untuk ditulis.
Case diakhiri denan esac dan pada setiap kelompok
instruksi diakhiri dengan ;;. Pada akhir pilihan yaitu *) yang berarti adalah
“default”, bila kondisi tidak memenuhi pola sebelumnya.
16. KONSTRUKSI FOR
For digunakan untuk
pengulangan dengan menggunakan var yang pada
setiap pengulangan akan diganti dengan nilai yang
berada pada daftar (list).
17. KONSTRUKSI WHILE
While digunakan untuk
pengulangan instruksi, yang umumnya dibatasi dengan suatu kondisi. Selama
kondisi tersebut TRUE, maka pengulangan terus dilakukan. Loop akan berhenti,
bila kondisi FALSSE, atau program keluar dari blok while melalui exit atau
break.
while kondisi
do
instruksi1
instruksi2
………………
done
18. INSTRUKSI DUMMY
Instruksi dummy
adalah instruksi yang tidak melakukan apa-apa, namun instruksi ini memberikan
status exit 0 (TRUE). Oleh karna itu, instruksi dummy dapat digunakan sebagai
kondisi forever pada loop (misalnya while).
Symbol instruksi
dummy adalah ➔ :
19. FUNGSI
Fungsi adalah program
yang dapat dipanggil oleh program lainnya dengan
menggunakan notasi NamaFungsi(). Fungsi memberikan
exit status ($?) yang dinyatakan dengan return nr, atau nilai 0 sebagai
default. Membuat fungsi diawali dengan nama fungsi, parameter, kemudian blok
program yang dinyatakan dalam { … }.
Contoh :
F1( ) {
……..
……..
return 1
}
Variabel dapat didefinisikan dalam fungsi sebagai
variable local atau global. Hal
yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi, jangan sampai bentrok
dengan nama variable yang sam adi luar fungsi, sehingga tidak terjadi isi
variable berubah.
III.
Tugas Pendahuluan
Sebagai tugas pendahuluan, bacalah dasar teori diatas
kemudian buatlah program Shell untuk Latihan 1 sampai dengan 5.
IV.
Percobaan
1.
Login
sebagai user.
2.
Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latihan.
Percobaan 8 : Instruksi Test
1.
Menggunakan
instruksi test, perhatikan spasi antara
$ NAMA=putri
$ test $NAMA = putri
$ echo $?
$ test $ NAMA = pnj
$ echo $?
Analisis: Percobaan diatas merupakan perintah
instruksi test. Variabel NAMA diisi dengan daniel. Kemudian untuk memanggil
variabel NAMA dengan perintah test dengan $NAMA didefiniskan putri maka status
exit bernilai 0. Sedangkan apabila berisi putra status exit berisi 1 artinya nama putra belum diinputkan, maka apabila dipanggil nama putra tidak ditemukan.
2.
Aplikasi test dengan kontruksi if
$ vi prog06.sh
#! /bin/sh
# prog06.sh
echo –n “NAMA = “
read NAMA
if test “$NAMA” = putri
then
echo “Selamat Datang $NAMA”
else
echo “Anda bukan putri, sorry!”
fi
Analisis: Percobaan diatas merupakan perintah instruksi test. Perintah vi prog06.sh digunakan untuk membuat program dengan script shell berikut
#! /bin/sh
# prog06.sh
echo –n “NAMA = “
read NAMA
if test “$NAMA” = putri
then
echo “Selamat Datang $NAMA”
else
echo “Anda bukan putri, sorry!”
fi
Sama halnya dengan point sebelumnya, yaitu
aplikasi test, namun pada shell script prog06.sh. Variabel nama didefinisikan
sebagai daniel. Dengan perintah if apabila variabel nama berisi daneil maka
akan ditampilkan Selamat datang daniel sedangkan apabila bukan (else) maka
akan ditampilkan Anda bukan daniel, sorry !! script fi untuk mengakhiri program.
3.
Jalankan program prog06.sh dengan
memasukkan NAMA = putri dan NAMA = <CR> perhatikan hasil tampilannya
$ prog06.sh [NAMA = putri]
$ prog06.sh [NAMA = <CR>] (Terdapat pesan error)
Analisis: Percobaan di atas merupakan perintah
instruksi test. Perintah prog06.sh digunakan apabila nama
diisi dengan daniel maka seperti pada perintah 1 yaitu Selamat datang daniel,
sedangkan pada contoh kedua variabel nama diisi dengan <CR> maka
ditampilkan pesan akan muncul error karena tidak ada di direktori yang dimasukkan.
4.
Modifikasi prog06.sh dengan menggunakan notasi
untuk test
$ vi prog06.sh
#! /bin/sh
# prog06.sh
echo –n “NAMA = “Read NAMA
if [ “$NAMA” = putri ]
then
echo “Selamat Datang $NAMA”
else
echo “Anda bukan putri, sorry!”
fi
Analisis: Percobaan di atas sama halnya dengan point 2 namun pada modifikasi ini perintah
test diganti dengan perintah [ ], dan akan digunakan pada percobaan
berikutnya.
5.
Jalankan program prog06.sh dengan
memasukkan NAMA = putri
$ . prog06.sh [NAMA= daniel]
Analisis: Percobaan di atas menggunakan perintah if yang didefiniskan dengan perintah [ ] tapi
hasil eksekusi prog06.sh akan menampilkan hasil yang sama dengan perintah test
sebelumnya.
Percobaan 9 : Notasi && dan ||
1.
Bila
file prog01.sh
ada (TRUE), maka jalankan program berikutnya. File prog01.sh ada, karena itu
exit status adalah TRUE, hasil operasi AND masih tergantung pada hasil eksekusi
intruksi ke 2, dan dengan demikian intruksi echo akan dijalankan
$ [ -f prog01.sh ] && echo “prog01.sh ada”
Analisa : Percobaan diatas dieksekusi apabila file prog01.sh ada maka program selanjutnya akan dijalankan. File tersebut ada karena exit status nya TRUE dan hasil operasi AND tergantung pada hasil eksekusi instruksi ke dua dan perintah echo dijalankan.
2.
File
prog99.sh tidak ada, karena itu exit status adalah FALSE dan intruksi echo
tidak dijalankan
$ [ -f prog99.sh ] &&
echo “prog99.sh ada”
Analisis:
Apabila file prog99.sh
tidak ada, karena itu exit status adalah FALSE dan instruksi echo tidak
dijalankan.
3.
Bila
prog01.sh ada maka jalankan shell script tersebut
$ [ -f prog01.sh ] && .
prog01.sh
Analisis: Pada perintah ini
adalah untuk menjalankan shell script dari prog01.sh. sama halnya dengan fungsi
instrusi dari . prog01.sh.
4.
Bila
prog01.sh ada maka jalankan program berikutnya. File prog01.sh memang ada,
karena itu exit status adalah TRUE, dank arena sudah TRUE maka instruksi echo
tidak lagi dijalankan
$ [ -f prog01.sh ] || echo
“Dieksekusi tidak ?”
Analisis: Apabila prog01.sh ada
maka jalankan program berikutnya. File prog01.sh memang ada, karena itu exit
status adalah TRUE, dan karena sudah TRUE maka instruksi echo tidak perlu lagi
dijalankan.
5.
File
prog99.sh tidak ada, karena itu exit status adalah FALSE, hasil masih
tergantung atas exit status instruksi ke dua, karena itu instruksi echo
dijalankan
$ [-f prog99.sh ] || echo
“Dieksekusi tidak ?”
Analisis:
Jika File prog99.sh
tidak ada, maka exit status adalah FALSE, hasil masih tergantung atas
exit status instruksi ke dua, karena itu instruksi echo dijalankan .
6.
File
prog99.sh tidak ada, maka tampilkan pesan error
$ [ -f prog99.sh ] || echo
“Sorry, prog99.sh tidak ada”
Analisis:
ApabilaFile prog99.sh
tidak ada, maka ditampilkan pesan error.
Percobaan 10 : Operator bilangan bulat
untuk test
1.
Menggunakan
operator dengan notasi test
$ i=5
$ test “$i” -eq 5
$ echo $?
Analisis:
Percobaan di atas merupakan perintah operator bilangan bulat untuk test. Variabel
i berisi 5 maka dengan notasi test, variabel i –eq 5 dan apabila
dijalankan instruksi echo $? maka status exit bernilai 0 karena nilai i yang diketahui adalah 5.
2.
Menggunakan
operator dengan notasi [] (pengganti notasi test)
$ [ “$i” –eq 5]
$ echo $?
Analisis: Ketika notasi nya ditambahkan [ ] maka status exit
tetap akan bernilai 0.
Percobaan 11 : Operator Logical dan
Kontruksi elif
1.
Membuat
file prog07.sh
$ vi prog07.sh
#!/bin/sh
# prog07.sh
echo –n “INCOME = “
read INCOME
if [ $INCOME –ge 0 –a $INCOME -1e 10000 ]
then
Biaya=10
elif [ $INCOME –gt 10000 –a $INCOME -1e 25000 ]
then
BIAYA=25
else
BIAYA=35
fi
echo “Biaya = $BIAYA”
Analisis:
Percobaan di atas merupakan perintah operator logika dan konstruksi elif. Perintah
$ vi prog07.sh digunakan untuk membuat Shell script prog07.sh yang berisi
perintah if dengan variabel income. Terdapat 3 perintah yaitu BIAYA=10, BIAYA=25 dan
BIAYA=35 dan akan dijalankan pada berikutnya.
2.
Jalankan
file prog07.sh dan masukan untuk INCOME=5000, 20000, 28000
$ . prog07.sh [INCOME=5000 ]
$ . prog07.sh [INCOME=20000 ]
$ . prog07.sh [INCOME=28000]
Analisis: Apabila
variabel income diisi dengan INCOME antara 0 sampai dengan 5000 maka biaya
yang akan ditampilkan adalah 10, sedangkan apabila income berisi nilai antara
5000 sampai dengan 20000 maka biaya yang akan ditampilkan adalah 25 dan jika
INCOME berisi lebih dari 20000 maka ditampilkan BIAYA 35 dan tampil seperti gambar
di atas.
Percobaan 12 : Hitungan aritmatika
1.
Menggunkan
utilasi exp
$ expr 5 + 1
$ A=5
$ expr $A + 2
$ expr $A – 4
$ expr $A * 2 (Ada pesan error)
$ expr $A \* 2
$ expr $A / 6 + 10
$ expr 17 % 5
Analisis:
Percobaan di atas merupakan perintah hitungan aritmatika. Utilitas expr dapat digunakan untuk perhitungan aritmatika. Untuk simbol dari penjumlahan
adalah +, pengurangan -, namun perkalian adalah \* dan untuk pembagian menggunakan / dan %
digunakan untuk expr mod atau sisa hasil bagi dan tampil seperti gambar di
atas.
2.
Substitusi
isi variable dengan hasil utilasi expr
$ A=5
$ B=’expr $A + 1’
$ echo $B
Analisis: Variabel A diisi dengan
5 kemudian variabel 5 berisi subtitusi dari perintah expr $A + 1 maka apabila
variabel B dipanggil akan berisi hasil dari aritmatika tersebut.
Percobaan 13 : Instruksi Exit
1.
Buat
shell script prog08.sh
$ vi prog08.sh
#!/bin/sh
if [ -f prog01.sh ]
then
exit 3
else
exit -1
fi
Analisis:
Gambar di atas merupakan peritntah instruksi exit. Shell script prog08.sh
inimberisi instruksi if untuk notasi [ ] prog01.sh berisi instruksi exit dan
akan dieksekusi pada percobaan berikutnya.
2.
Jalankan
prog08.sh
$
. prog08.sh
$
echo $?
Analisis: Tampilan nilai 0 akan mucul ketika . prog08.sh dijalankan.
Percobaan 14 : Kontruksi case-esac
1.
Buatlah
file prog09.sh
dengan editor vi
$ vi prog09.sh
#!/bin/sh
# Prog: prog09.sh
echo “1. Siapa yang aktif”
echo “2. Tanggal hari ini”
echo “3. Kalender bulan ini”
echo –n “Pilihan : “
read PILIH
case $PILIH in
1)
echo “Yang aktif saat ini”
who
;;
2)
echo “”Tanggal hari ini”
date
;;
3)
echo “Kalender bulan ini”
cal
;;
*)
echo “Salah pilih !!”
;;
esac
Analisis: Dengan variabel
pemilihan PILIH melalui keyboard. Format penulisan case ini pertama diawali
dengan case kemudian variabel pilih diikuti dengan in. Kemudian definiskan
untuk nomor 1 hingga 3 setiap nomor ditutup dengan simbol ;;. Untuk pemilihan
terakhir apabila memilih selain nomor 1 2 3 digunkan perintah *). Kemudian
ditutup dengan esac dan akan dieksekusi pada percobaan berikutnya
2.
Jalankan
perintah prog09.sh
$ . prog09.sh
Analisis: Apabila memilih nomor 1
maka akan menampilkan siapa user yang sedang aktif, sedangkan apabila memilih
nomor 2 akan menampilkan tanggal hari ini, apabila memilih nomer 3 akan menampilkan tanggal pada kalender bulan ini dan apabila memilih selai nomor 1 2 atau 3 maka akan
ditampilkan echo Salah pilih !!. Kemudian ditutup dengan esac.
3.
Buatlah
file prog10.sh yang merupakan bentuk lain dari case
$ vi prog10.sh
#!/bin/sh
# Prog: prog10.sh
echo –n “Jawab (Y/T) : “
read JWB
case $JWB in
Y | Y | ya | Ya | YA ) JWB=y ;;
T | T | tidak | Tidak | TIDAK ) JWB=t ;;
Analisis: Shell script prog10.sh
ini merupakan bentuk lain dari perintah case. Variabel JWB dapat dijawab dengan
perintah y/Y/ya?Ya/YA untuk y, sedangkan untuk JWB=t dapat ditulis dengan
t/T/tidak/Tidak/TIDAK dan akan dieksekusi pada percobaan berikutnya.
4.
Jalankan
prog10.sh
$ . prog10.sh
Analisis: Eksekusi
dari prog10.sh. yang digunakan 3 buah contoh untuk nilai JWB yaitu y, T dan
YA.
5.
Modifikasi
file prog10.sh
yang merupakan bentuk lain dari case
$ vi prog10.sh
#!/bin/sh
#Prog: prog10.sh
echo –n “jawab (Y/T) : \c”
read JWB
case $JWB in
[yY] | [yY] [aA] ) JWB=y ;;
[tT] | [tT]idak ) JWB=t ;;
esac
Analisis:
Perintah case untuk jawaban juga dapat ditulis seperti
diatas. Berarti y dapat ditulis huruf kecil atau besar, kemudian untuk “ya”
bisa y nya bisa huruf besar/kecil begitupula dengan a nya. Sama halnya dengan
ya tidak juga demikian dan akan dieksekusi pada berikutnya.
6.
Jalankan
program prog10.sh
$
. prog10.sh
Analisis:
Eksekusi
dari program shell script prog10.sh yang digunakan untuk modifikasi .
Percobaan 15 : Konstruksi for-do-done
1.
Buatlah
file prog11.sh
$ vi prog11.sh
#!/bin/sh
# Prog: prog11.Sh
for NAMA in damelia messi neymar suarez
do
echo “Nama adalah : $NAMA”
done
Analisis: Shell script ini
berisi konstruksi for-do-done dimana for untuk variabel nama ada damelia messi
neymar suarez. Kemudian dijalankan dengan perintah do dan ditutup dengan done
dan akan dieksekusi pada percobaan berikutnya.
2.
Jalankan
program prog11.sh
$ . prog11.sh
Analisis: Apabila prog11.sh ini
dijalankan perintah echo akan ditampilkan untuk setiap NAMA karena menggunakan
pengulangan for dan tampil seperti tampilan di atas.
3.
Buatlah
file prog12.sh yang berisi konstruksi for dan wildcard
$ vi prog12.sh
#!/bin/sh
# Prog: prog12.sh
for F in *
do
echo $F
done
Analisis: Shell script
prog12.sh ini berisi konstrusi for dan wild card. Program ini akan menampilkan
nama file yang berada pada current directory dan akan dieksekusi pada percobaan
berikutnya
4.
Jalankan
program prog12.sh
$ . prog12.sh
Analisis: Apabila prog12.sh ini dijalankan maka sleuruh nama directory pada current directory akan ditampilkan.
5.
Modifikasi
file prog12.sh
$ vi prog12.sh
#!/bin/sh
# prog: prog 12. Sh
for F in *.1st
do
1s -1 $F
done
Analisis: Modifikasi
prog12.sh ini akan menampilkan long list dari file yang mempunyai ekstensi file
.lst dan akan dieksekusi pada percobaan berikutnya.
6.
Jalankan
prog12.sh
$ . prog12.sh
Analisis: Ketika tidak ditemukan file/direktori
dengan ekstensi .lst pada current directory ini sehingga ditampilkan pesan
error dan tampil seperti gambar.
Percobaan 16 : Kontruksi while-do-done
1.
Buatlah
program prog13.sh
$ vi prog13.sh
#!/bin/sh
# Prog: prog13.sh
PILIH=1
while [ $PILIH –ne 4 ]
do
echo “1. Siapa yang aktif”
echo “2. Tanggal hari ini”
echo “3. Kalender bulan ini”
echo “4. Keluar”
echo “Pilihan : \c”
read PILIH
if [ $PILIH –eq 4 ]
then
break
fi
clear
done
echo “Program berlanjut di sini setelah break”
Analisis: Program shell
script dijalankan untuk prog13.sh yangberisi perintah pengulangan serta terdapat 4
pilihan. Variabelnya adalah PILIH –ne 4 dan akan dieksekusi pada percobaan
berikutnya.
2.
Jalankan
prog13.sh
$ . prog13.sh
Analisis: Ketika prog13.sh
ini dijalankan apabila memilih nomor 1 2 atau 3 maka akan diulangi atau
ditampilkan lagi pilihan tersebut karena perintahnya tidak berisi. Sedangkan
apabila memilih nomor 4 maka pengulangan akan berhenti.
Percobaan 17 : Intruksi Dummy
1.
Modifikasi
file prog13.sh, kemudian jalankan!
$ vi prog13 . sh
#!/bin/sh
#prog: prog13 . sh
PILIH=1
while :
do
echo “1. Siapa yang akif”
echo “2. Tanggal hari ini”
echo “3. Kalender bulan ini”
echo “4 keluar”
echo “ pilihan : \c”
read PILIH
if [ $PILIH –eq 4 ]
then
break
fi
clear
done
echo “Program berlanjut di sini setelah break”
Analisis: Modifikasi ini
terlihat pada penulisan while : sebelumnya ditambahkan dengan notasi [ $PILIH
–ne 4] sedangkan pada prog14.sh sekarang tidak ada dan akan dieksekusi pada
percobaan berikutnya
2.
Jalankan
prog13.sh
$ . prog13.sh
Analisis:
GHasil dari eksekusi
modifikasi prog13.sh ini akan sama dengan perintah sebelumnya yaitu pada
percobaan 17 .
3.
Buatlah
file prog14.sh yang berisi instruksi dummy untuk konstruksi if, kemudian
jalankan!
$ vi prog14.sh
#!/bin/sh
# Prog : prog14.sh
echo –n “masukan nilai : “
read A
if [ $A –gt 100 ]
then
:
else
echo “ ok !”
fi
Analisis: Pada shell script,
pada program prog14.sh ini berisi instruksi dummy untuk konstruksi if. Variabel
A dinyatakan dengan nilai –ne 100. Then echo OK dan akan dieksekusi pada
percobaan berikutnya.
4.
Jalankan
prog14.sh
$ . prog14.sh
Analisis: Apabila dijalankan jika
nilai yang dimasukan masih kurang dari 100 maka ditampilkan OK !, sedangkan
apabila nilai lebih dari 100 maka tidak akan ada pesan OK ! dan tampil seperti
gambar.
Percobaan 18 : Fungsi
1.
Buatlah
file fungsi.sh, kemudian jalankan!
$ vi fungsi.sh
#!/bin/sh
# Prog : fungsi.sh
F1 ( ) {
echo “Fungsi F1”
return 1
}
echo “Menggunakan fungsi”
F1
F1
echo $?
Analisis: File fungsi.sh pada shell script ini
berisi perintah fungsi untuk return 1 dan status exit setalah menjalankan
fungsi dan akan dieksekusi pada percobaan berikutnya.
2.
Jalankan
fungsi.sh
$ . fungsi.sh
Analisis:
Apabila file fungsi,shdijalankan
akan berstatus exit 1 karena bernilai false dan tampil seperti gambar.
3.
Menggunakan
variable pada fungsi dengan memodifikasi file fungsi.sh, kemudian jalankan!
$ vi fungsi.sh
#!/bin/sh
# Prog : fungsi.sh
F1 ( )
{
Honor=10000
echo “Fungsi F1”
return 1
}
echo “Menggunakan fungsi”
F1
F1
echo “Nilai balik adalah $?”
echo “Honor = $Honor”
Analisis: Modifikasi file fungsi.sh ini hanya
ditambah variabel Honor dengan 10000 dan echo Nilai balik adalah $? dan akan
dieksekusi pada percobaan berikutnya.
4.
Jalankan
fungsi.sh
$ . fungsi.sh
Analisis: Tidak ada perbedaan fungsi
dalam file.sh hasil modifikasi ini hanya penambahan nilai dari variabel Honor
saja.
5.
Menggunakan
variable pada fungsi dengan memodifikasi file fungsi.sh, kemudian jalankan!
$ vi fungsi.sh
#!/bin/sh
# Prog : fungsi.sh
F1 ( )
{
local Honor=10000
echo “Fungsi F1”
return 1
}
echo “Menggunakan fungsi”
F1
F1
echo “Nilai balik adalah $?”
echo “Honor = $Honor”
Analisis: Percobaan ini juga masih
merupakan modifikasi dari file fungsi.sh dengan penambahan local sebelum pendefinisian variabel Honor=10000 dan akan
dieksekusi pada percobaan berikutnya.
6.
Jalankan
fungsi.sh
$ . fungsi.sh
Analisis: Untuk hasilnya dari perintah . fungsi.sh yaitu tidak ada perubahan dari modifikasi file fungsi.sh sebelumnya. Sama saja dengan percobaan 18 nomer 3.
V.
Latihan
1.
Buatlah
program salin.sh yang menyalin file (copy) sebagai berikut : Salin.sh file
–asal file-tujuan Dengan ketentuan :
a.
Bila file asal tidak ada, berikan pesan, salin gagal.
b.
Bila file tujuan ada tersebut directory, beri pesan bahwa file tidak bisa
disalin ke direktori
c.
Bila file tujuan ada dan file biasa, beri pesan apakah file tersebut akan
dihapus, bila dijawab dengan “Y”, maka copy file tersebut
d.
Bila file tujuan belum ada, lakukan copy
Untuk
mengambil nama file, gunakan parameter $1 dan $2. Bila jumlah parameter tidak
sama ($#) dengan 2, maka beri pesan exit=-1
Analisis:
Jika
file tidak berhasil ditemukan maka nantinya akan langsung di close. Untuk
pilihan digunakan perintah if else then, tetapi karena perintah pertama pada
shell script salin.sh menyatakan jika file tidak ada maka akan di close, dan
memang si file ini tidak ada, sehingga perintah yang dikerjakannya pada saat
shell script dieksekusi menggunakan perintah . Salin.sh adalah perintah pilihan
nomor 1 yaitu “keluar” karena tidak ada filenya dan tampil seperti gambar di
atas.
2.
Buat
program yang memeriksa nama direktori, jika parameter tersebut adalah
direktori, maka jalankan instruksi ls –ld pada direktori tersebut. Namakan
program tersebut checkdir.sh. gunakan notasi [ -d namadirektori ] dan pilih
logical && atau || pada level shell.
Analisis:
Ketika dijalankan program checkdir.sh ini tidak
menemukan directory yang di cari sehingga secara otomatis akan di “closed” atau
exit dan tampil seperti gambar di atas.
3.
Dengan
shell script pph.sh, hitung PPH per tahun dengan ketentuan sebagai
berikut
:
·
10
juta pertama PPH 15%,
·
25
juta berikutnya (sisa) PPH 25%
·
Bila
masih ada sisa, maka sisa tersebut PPH 35%.
Contoh
:
Gaji
8 juta
PPH
= 15% * 8 juta
Gaji 12 juta
PPH = 15% * 10 juta + 25% (12-10) juta
Gaji 60 juta
PPH = 15% * 10 juta + 25% * 25 juta + 25% * (60-10-25)
juta
Debugging : untuk
melakukan tracing (debug) gunakan opsi –x pada eksekusi shell.
Analisis:
Untuk menghitung PPH per tahun dengan
ketentuan 10 juta pertama PPH 15%, 25 juta berikutnya (sisa) PPH 25%, bila
masih ada sisa, maka sisa tersebut PPH 35%. Untuk membuat sebuah file pph.sh
gunakan perintah vi pph.sh. masuk ke shell dan buat sebuah perintah dalam
vi pph.sh dengan memasukan perintah yang
ada pada gambar di atas. Gunaka tombol Esc ‘:’ dan wq untuk keluar dari shell
dan menyimpan. Kemudian jalankan pph.sh dengan \ perintah bash pph.sh dan untuk
debugging untuk melakukan tracing (debug) gunakan opsi –x pada eksekusi shell.
4.
Buatlah
program myprog.sh yang memproses parameter $1, nilai parameter harus berupa
string :
start
stop
status
restart
reload
Bila
buka dari string tersebut, maka berikan pesan error. Sempurnakan program
dibawah ini!
Analisis: Program myprog.sh yang memproses
parameter $1, nilai parameter harus berupa string start, stop, status, restart,
dan reload. Isi dari file myprog.sh dengan perintah untuk melakukan seleksi
terhadap inputan yang dimasukan. Jika inputan yang dimasukan start, stop,
status, restart, atau reload maka akan muncul output dan
jika tidak, akan muncul informasi kesalahan.
5.
Buat
sebuah fungsi pada script confirm.sh yang memberikan konfirmasi jawaban Yes, No
atau Continue. Jika jawaban Yes, maka beri nilai balik 0, No = 1 dan continue =
2. Modifikasi program!
Analisis:
Pada latihan nomer 5 yaitu membuat sebuah fungsi pada
script confirm.sh yang memberikan konfirmasi jawaban Yes, No atau Continue.
Jika jawaban Yes, maka beri nilai balik 0, No = 1 dan continue = 2 serta
memodifikasi program tersebut. Pada perintah yang terdapat di modul tidak bisa
dijalankan, sehingga digunakan modifikasi terhadap isi perintah. Lalu digunakan
perintah elif seperti yang terlihat pada gambar di atas, dan ketika dijalankan
hasilnya akan tampil seperti di atas dengan output tulisan “Jawaban YES OK”.
VI.
Kesimpulan
Dari percobaan diatas didapatkan kesimpulan :
- Shell script menggunakan ekstensi .sh serta variable shell.
- Variable harus dimulai dengan alfabet dan disusul alfanumerik dan karakter lain. Variable ini dapat ditulis dengan huruf kecil atau huruf besar atau campuran keduanya.
- Setiap program akan diberikan informasinya melalui variable special $? Yaitu 0 untuk sukses dan 1 untuk error.
- Terdapat beberapa operator yaitu operator untuk test, test untuk file dan direktori, LOGICAL && dan ||, operator bilangan bulat dan operator logical.
- Dalam pemograman shell bisa menggunakan perintah if, case dan while in serta fungsi lainnya.
Comments
Post a Comment