Pemrograman Shell 6A dan 6B
Muhammad Iqbal Tejasumirat FILE : Praktikum 6A dan 6B
BM5A
1803421037
OS Linux
POKOK BAHASAN:
- Pemrograman Shell
TUJUAN BELAJAR
1. Mengetahui dan memahami pemrograman shell pada sistem operasi Linux.
2. Mengetahui dan memahami cara penulisan shell script, variabel dan yang lainnya.
3. Menggunakan perintah-perintah pemrograman shell.
4. Menerapkan pemrograman shell dalam program
.
DASAR TEORI
1. 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.
2. 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.
3. OPERATOR BILANGAN BULAT UNTUK TEST
4. OPERATOR LOGICAL (TEST LEVEL)
Logical operator terdiri dari AND(-a), OR(-o), dan NOT(!). Operator ini menggabungkan hasil ekspresi sebagai berikut :
5. KONSTRUKSI IF THEN ELSE IF
6. HITUNGAN ARITMATIKA
Untuk melakukan perhitungan aritmatik, shell tidak memiliki kemampuan built-in, tetapi meminta bantuan program lain yaitu `expr`. Program expr berfungsi untuk mengevaluasi suatu expresi baik itu perbandingan string atau operasi aritmatik sederhana. Operator aritmatik yang disediakan expr antara lain:
7. INSTRUKSI EXIT
Program dapat dihentikan (terminated/selesai) dengan intruksi exit. Sebagai nilai default program tersebut akan memberikan status exit 0.
8. KONSTRUKSI CASE
Case digunakan untuk menyerdehanakan pemakaian if yang berantai, sehingga dengan case, kondisi dapat dikelompokkan secara logis dengan lebih jelas dan mudah untuk ditulis.
9. KONSTRUKSI FOR
For digunakan untuk perulangan dengan menggunakan variable yang ada pada setiap perulangan akan diganti dengan nilai yang berada pada daftar (list).
10. KONSTRUKSI WHILE
Pernyataan perulangan ini umumnya digunakan untuk melakukan perulangan dengan kondisi tertentu, di mana perulangan akan terus dilakukan dalam blok while selama ekspresi yang menjadi syarat masih dipenuhi (bernilai benar). Untuk ilustrasi, dapat dilihat pada gambar Sedangkan mengenai bentuk dari pernyataan ini adalah:
11. INSTRUKSI DUMMY
Instruksi dummy adalah instruksi yang tidak melakukan apa-apa, namun isntruksi ini memberikan status exit 0 (TRUE). Oleh karna itu, instruksi dummy dapat digunakan sebagai kondisi forever pada loop (misalnya while).
Symbol instruksi dummy adalah => :
12. FUNGSI
Hampir sama dengan bahasa pemrograman tingkat tinggi, pada shell script juga dikenal istilah fungsi. Dimana dengan adanya fungsi kita dapat membagi kode kita ke dalam sub-sub yang lebih kecil. Hal ini sangat berguna jika kita membangun sebuah program shell script yang cukup kompleks. 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 :
Percobaan:
Percobaan 1: Membuat Shell Script
1. Buatlah file prog01.sh dengan editor vi
$ vi prog01.sh
#!/bin/sh
# Program Shell
#
var1=x
var2=8
2. Untuk menjalankan shell, gunakan notasi TITIK di depan nama program
$ . prog01.sh
3. Untuk menjalankan shell, dapat juga dengan membuat executable file dan dieksekusi relatif dari current directory
$ chmod +x prog01.sh
$ ./prog01.sh
Percobaan 2: Variable
1. Contoh menggunakan variable pada shell interaktif
$ VPT=poltek
$ echo $VPT
2. Pemisahan 2 kata dengan spasi menandakan eksekusi 2 buah instruksi. Karakter $ harus ada pada awal nama variable untuk melihat isi variable tersebut, jika tidak, maka echo akan mengambil parameter tersebut sebagai string.
$ VPT2= poltek Negeri Jakarta(Terdapat pesan error)
$ VPT2=”poltek Negeri Jakarta”
$ echo VPT2
$ echo $VPT2
- Lalu ketika ingin melihat isi dari variable yang telah dibuat tadi kita harus menambahkan $ didepan nama variable agar dapat melihas nilai dari variable tersebut.
3. Menggabungkan dua variable atau lebih
$ V1=”poltek”
$ V2=‘:’
$ V3=’Jakarta’
$ V4=$V1$V2$V3
$ echo $V4
4. Menggabungkan isi variable dengan string yang lain. Jika digabungkan dengan nama variable yang belum didefinisikan (kosong) maka instruksi echo menghasilkan string kosong. Untuk menghindari kekeliruan, nama variable perlu diproteksi dengan { } dan kemudian isi variable tersebut digabung dengan string.
$ echo $V3
$ echo $V3PNJ
$ echo ${V3}PNJ
5. Variabel dapat berisi instruksi, yang kemudian bila dijadikan input untuk shell, instruksi tersebut akan dieksekusi
$ CMD=who
$ $CMD
$ CMD =”ls -l”
$ $CMD
6. Modifikasi file prog01.sh berikut
$ vi prog01.sh
#!/bin/sh
#program shell
V1=poltek
V2=‟:‟
V3=Jakarta
echo “Pemrograman shell”
echo $V1$V2$V3
V3=ITS
echo $V1$V2 di $V3
7. Cara sederhana mengeksekusi shell adalah dengan menggunakan notasi titik di depan nama shell script tersebut. Bila direktori actual tidak terdaftar dalam PATH, maka command tersebut tidak dapat ditemukan. Bila script belum executable, script tidak dapat dieksekusi.
$ . prog01.sh
$ prog01.sh (Terdapat pesan error)
$ ./prog01.sh (Terdapat pesan error)
$ chmod +x prog01.sh
$ ./prog01.sh
Percobaan 3: Membaca Keyboard
1. Menggunakan instruksi read
$ read nama
Iqbal
$ echo $nama
2. Membaca nama dan alamat dari keyboard
$ vi prog02.sh
#!/bin/sh
# prog02.sh
# membaca nama dan alamat
echo “Nama Anda : “
read nama
echo “Alamat : “
read alamat
echo “Kota : “
read kota
echo
echo “Hasil adalah : $nama, $alamat di $kota”
3. Eksekusi program prog02.sh
$ . prog02.sh
4. Instruksi echo secara otomatis memberikan baris baru, maka untuk menghindari hal tersebut disediakan opsi –n, yang menyatakan kepada echo untuk menghilangkan baris baru. Modifikasi program prog02.sh
5. Eksekusi program prog02.sh
6. Variabel kosong adalah variable yang tidak mempunyai nilai. Variabel ini didapat atas assignment atau membaca dari keyboard atau variable yang belum didefinisikan
$ read nama
<CR>
$ echo $nama
$ A=
$ B=””
$ C=$A$B
$ echo $C
7. Variabel dapat disubtitusikan dengan hasil eksekusi dari sebuah instruksi. Pada contoh dibawah , instruksi pwd dieksekusi lebih dahulu dengan sepasang Back Quate (tanda kutip terbalik). Hasil dari eksekusi tersebut akan masuk sebagai nilai variable DIR
$ pwd
$ DIR=`pwd`
$ echo $DIR
8. Buatlah shell script prog03.sh
$ vi prog03.sh
#!/bin/sh
# prog03.sh
#
NAMA=`whoami`
echo Nama Pengguna Aktif adalah $NAMA
tanggal=`date | cut –c1-10`
echo Hari ini tanggal $tanggal
9. Eksekusi prog03.sh
Percobaan 4: Parameter
1. Membuat shell script prog04.sh
$ vi prog04.sh
#!/bin/sh
# prog04.sh versi 1
# Parameter passing
#
echo “Nama program adalah $0”
echo “Parameter 1 adalah $1”
echo “Parameter 2 adalah $2”
echo “Parameter 3 adalah $3”
2. Eksekusi prog04.sh tanpa parameter, dengan 2 parameter, dengan 4 parameter
3. Membuat shell script prog04.sh versi 2 dengan memberikan jumlah parameter
$ vi prog04.sh
#!/bin/sh
# prog04.sh versi 2
# Parameter passing
#
echo “Jumlah parameter yang diberikan adalah $#”
echo “Nama program adalah $0”
echo “Parameter 1 adalah $1”
echo “Parameter 2 adalah $2”
echo “Parameter 3 adalah $3”
4. Eksekusi prog04.sh tanpa parameter dan dengan 4 parameter
5. Membuat shell script prog04.sh versi 3 dengan menambahkan total parameter dan nomor proses id (PID)
$ vi prog04.sh
#!/bin/sh
# prog04.sh versi 3
# Parameter passing
#
echo “Jumlah parameter yang diberikan adalah $#”
echo “Nama program adalah $0”
echo “Parameter 1 adalah $1”
echo “Parameter 2 adalah $2”
echo “Parameter 3 adalah $3”
echo “Total parameter adalah $*”
echo “PID proses shell ini adalah $$”
6. Eksekusi prog04.sh dengan 4 parameter
Percobaan 5: Status Exit
1. String tidak ditemukan, maka status exit adalah 1
$ grep xyz /etc/passwd
$ echo $?
2. String ditemukan, maka status exit adalah 0
$ grep <user> /etc/passwd
$ echo $?
Percobaan 6: Konstruksi if
1. Instruksi dengan exit status 0
$ who
$ who | grep <user>
$ echo $?
2. If membandingkan exit status dengan 0, bila sama, maka blok program masuk ke dalam blok then-fi
$ if [ $? = 0 ]
> then
> echo “Pemakai tersebut sedang aktif”
> fi
3. Nomor (1) dan (2) diatas dapat disederhanakan dengan
$ if who|grep <user> >/dev/null
> then
> echo okay
> fi
Percobaan 7:Konstruksi if else then
1. Membuat shell script prog05.sh
$ vi prog05.sh
#!/bin/sh
# prog05.sh
# Program akan memberikankonfirmasi apakah nama
# user sedang aktif atau tidak
#
echo –n “Berikan nama pemakai : ”
read nama
if who | grep $nama > /dev/null
then
echo “$nama sedang aktif”
else
echo “$nama tidak aktif”
fi
2. Jalankan prog05.sh, masukkan nama pemakai yang aktif yang tampil pada instruksi who dan coba juga untuk nama pemakai yang tidak aktif
$ who
$ . prog05.sh [nama=<user>]
$ . prog05.sh [nama=studentOS]
Percobaan 8 : Instruksi Test
1. Menggunakan instruksi test, perhatikan spasi antara
$ NAMA=amir
$ test $NAMA = amir
$ echo $?
$ test $NAMA = boris
$ echo $?
2. Aplikasi test dengan konstruksi if
$ vi prog06.sh
#!/bin/sh
# prog06.sh
echo –n “NAMA = “
read NAMA
if test “$NAMA” = iqbal
then
echo “Selamat Datang $NAMA”
else
echo “Anda bukan iqbal!!”
fi
3. Jalankan program prog06.sh dengan memasukkan NAMA = amir dan NAMA = <CR>. perhatikan hasil tampilannya
$ . prog06.sh [NAMA = iqbal]
$ . prog06.sh [NAMA = <CR>] (Terdapat pesan error)
4. Modifikasi prog06.sh dengan menggunakan notasi untuk test
$ vi prog06.sh
#!/bin/sh
# prog06.sh
echo –n “NAMA = “
read NAMA
if [ “$NAMA” = iqbal ]
then
echo “Selamat Datang $NAMA”
else
echo “Anda bukan iqbal!!”
fi
5. Jalankan program prog06.sh dengan memasukkan NAMA = iqbal
$ . prog06.sh [NAMA = iqbal]
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 instruksi ke 2, dan dengan demikian instruksi echo akan dijalankan.
$ [ -f prog01.sh ] && echo “Prog01.sh ada”
2. File prog99.sh tidak ada, karena itu exit status adalah FALSE dan instruksi echo tidak dijalankan
$ [ -f prog99.sh ] && echo “Prog99.sh ada”
3. Bila prog01.sh ada maka jalankan shell script tersebut
$ [ -f prog01.sh ] && . prog01.sh
4. Bila 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 lagi dijalankan
$ [ -f prog01.sh ] || echo “Dieksekusi tidak ?”
5. File prog99.sh tidak ada, karena itu exit status adalah FALSE, hasil m tergantung atas exit status instruksi ke dua, karena itu instruksi echo dijalankan
$ [ -f prog99.sh ] || echo “Dieksekusi tidak ?”
6. File prog99.sh tidak ada, maka tampilkan pesan error
$ [ -f prog99.sh ] || echo “Sorry, prog99.sh tidak ada”
Percobaan 10 : Operator bilangan bulat untuk test
1. Menggunakan operator dengan notasi test
$ i=5
$ test “$i” –eq 5
$ echo $?
2. Menggunakan operator dengan notasi [ ] (penganti notasi test)
$ [ “$i” –eq 5 ]
$ echo $?
Percobaan 11 : Operator Logical dan konstruksi elif
1. Buatlah file prog07.sh
$ vi prog07.sh
#!/bin/sh
# prog07.sh
echo –n “INCOME = “
read INCOME
if [ $INCOME –ge 0 –a $INCOME –le 10000 ]
then
BIAYA=10
elif [ $INCOME –gt 10000 –a $INCOME –le 25000 ]
then
BIAYA=25
else
BIAYA=35
fi
echo “Biaya = $BIAYA”
2. Jalankan file prog07.sh dan masukkan untuk INCOME=5000, 20000, 28000
$ . prog07.sh [INCOME=5000]
$ . prog07.sh [INCOME=20000]
$ . prog07.sh [INCOME=28000]
Percobaan 12 : Hitungan aritmetika
1. Menggunakan utilitas expr
$ 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
2. Substitusi isi variable dengan hasil utilitas expr
$ A=5
$ B=`expr $A + 1`
$ echo $B
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
2. Jalankan script prog08.sh dan periksa status exit
$ . prog08.sh
$ echo $?
Percobaan 14 : Konstruksi 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
2. Jalankan program prog09.sh, cobalah beberapa kali dengan inputan yang berbeda
$ . prog09.sh
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 ;;
esac
4. Jalankan program prog10.sh, cobalah beberapa kali dengan inputan yang berbeda
$ . prog10.sh
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 ;;
*) JWB=? ;;
esac
6. Jalankan program prog10.sh, cobalah beberapa kali dengan inputan yang berbeda
$ . prog10.sh
Percobaan 15 : Konstruksi for-do-done
1. Buatlah file prog11.sh
$ vi prog11.sh
#!/bin/sh
# Prog: prog11.sh
for NAMA in bambang harry kadir amir
do
echo “Nama adalah : $NAMA”
done
2. Jalankan program prog11.sh
$ . prog11.sh
3. Buatlah file prog12.sh yang berisi konstruksi for dan wildcard, program ini akan menampilkan nama file yang berada di current direktori
$ vi prog12.sh
#!/bin/sh
# Prog: prog12.sh
for F in *
do
echo $F
done
4. Jalankan program prog12.sh
$ . prog12.sh
5. Modifikasi file prog12.sh, program ini akan menampilkan long list dari file yang mempunyai ekstensi lst
$ vi prog12.sh
#!/bin/sh
# Prog: prog12.sh
for F in *.lst
do
ls –l $F
done
6. Jalankan program prog12.sh
$ . prog12.sh
Percobaan 16 : Konstruksi while-do-done
1. Buatlah file 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”
2. Jalankan program prog13.sh
$ . prog13.sh
Percobaan 17 : Instruksi dummy
1. Modifikasi file prog13.sh
$ vi prog13.sh
#!/bin/sh
# Prog: prog13.sh
PILIH=1
while :
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”
2. Jalankan program prog13.sh
$ . prog13.sh
3. Buatlah file prog14.sh yang berisi instruksi dummy untuk konstruksi if
$ vi prog14.sh
#!/bin/sh
# Prog: prog14.sh
echo –n “Masukkan nilai : “
read A
if [ $A –gt 100 ]
then
else
echo “OK !”
fi
4. Jalankan program prog14.sh beberapa kali dengan input yang berbeda
$ . prog14.sh
Percobaan 18 : Fungsi
1. Buatlah file fungsi.sh
$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( ) {
echo “Fungsi F1”
return 1
}
echo “Menggunakan Fungsi”
F1
F1
echo $?
2. Jalankan program fungsi.sh
$ . fungsi.sh
3. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh
$ 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”
4. Jalankan program fungsi.sh
$ . fungsi.sh
LATIHAN
1. Buatlah program salin.sh yang menyalin file (copy ) sebagai berikut :
salin.sh file -asal file-tujuan
Dengan ketentuan :
-Bila file asal tidak ada, berikan pesan, salin gagal.
-Bila file tujuan ada dan file tersebut adalah directory, beri pesan bahwa file tidak bisa disalin ke direktori
-Bila file tujuan ada dan file biasa, beri pesan apakan file tersebut akan dihapus, bila dijawab dengan “Y”, maka copy file tersebut
-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
#!/bin/sh
# file: salin.sh
# Usage: salin.sh fasal ftujuan
if [ $# -ne 2]
then
echo “Error, usage: salin.sh file-asal file-tujuan”
exit –1
fi
fasal=$1
ftujuan=$2
echo “salin.sh $fasal $ftujuan”
……
……
Script
Pada Latihan tersebut membuat script dengan konstruksi if dan elif dengan ketentuan dari soal tidak bisa mengcopy ke direktori, jika file asal tidak ada akan menampilkan pesan error “salin gagal”, jika file tujuan sudah ada akan mengkonfirmasi penyalinan, dan jika file tujuan belum ada akan di salin secara langsung.
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 logic al && atau || pada level shell.
#!/bin/sh
# file: checkdir.sh
# Usage: checkdir.sh DirectoryName
#
if [ $# -ne 1]
then
echo “Error, usage: checkdir.sh DirectoryName”
exit 1
fi
[ … ] && …
Script
Membuat program untuk melihat direktori dengan perintah ls –ld, dan hanya bisa melihat satu direktori. Jika hanya mengeksekusi perintah tanpa nama atau lebih dari satu direktori maka akan menampilkan pesan error dan terminal akan di exit.
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.
$ sh –x pph.sh
+ echo –n ‘Berikan gaji dalam ribuan rupiah : ‘
Berikan gaji dalam ribuan rupiah : + read gaji
20000
+ pkp=10000
+ ‘[‘ 20000 –le 10000 ‘]’
++ expr 20000 – 10000
+ gaji=10000
+ pph=1500
+ pkp=25000
+ ‘[‘ 10000 –le 25000 ‘]’
+ pkp=10000
++ expr 1500 + 10000 ‘*’ 25 / 100
+ pph=4000
+ echo ‘Pajak Penghasilan = 4000’
Pajak Penghasilan = 4000
Script
Pada latihan tersebut kita membuat program untuk menentukan pajak penghasilan dengan menggunakan konstruksi if elif, dimana jika penentuan pajaknya sesuai dengan soal diatas.
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 di bawah ini untuk keperluan tersebut
#!/bin/sh
# See how we were called
case “$1” in
start)
echo “Ini adalah start”
;;
stop)
*)
echo “Ini adalah stop”
;;
echo $”Usage:$0 {start|stop|restart|reload|status}”
;;
esac
return
Script
Membuat program dengan konstruksi case, dimana untuk mengisi variable 1 menyesuaikannya dengan case yang ada, jika input yang diberikan tidak sesuai maka akan memberikan error seperti pada gambar.
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 kerangka program berikut untuk memenuhi permintaan tersebut.
#!/bin/sh
# Confirm whether we really want to run this service
confirm() {
local YES=”Y”
local NO=”N”
local CONT=”C”
while :
do
echo –n “(Y)es/(N)o/(C)ontinue? {Y] “
read answer
answer=`echo “$answer” | tr ‘[a-z]’ ‘[A-Z]’`
if [ “$answer” = “” –0 “$answer” = $YES ]
then
return 0
elif ….
then
return 2
elif ….
then
return 1
fi
done
}
Test fungsi diatas dengan program berikut :
$ vi testp.sh
. confirm.sh
confirm
if [ $? –eq 0 ]
then
echo “Jawaban YES OK”
elif [ $? =eq 1 ]
then
echo “Jawaban NO”
else
echo “Jawaban CONTINUE”
fi
Perhatikan baris pertama, adalah loading dari fungsi confirm yang terdapat di script confirm.sh. Setelah eksekusi script tersebut, maka fungsi confirm dapat digunakan
Script confirm.sh
Hasil
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.
KESIMPULAN
Dari Praktikum tersebut dapat disimpulkan bahwa pemrograman shell dapat mempermudah penggunaan shell pada terminal sistem operasi linux dimana didalam satu file program dapat mengeksekusi lebih dari satu perintah dan dapat memberikan ketentuan/kondisi untuk menjalankan perintah sesuai dengan kebutuhan.
Comments
Post a Comment