Judul Laporan
Pokok Bahasan
Tujuan Belajar
Abstrak
Teori Singkat
Jawaban Pertanyaan Pendahuluan
Percobaan dan Hasil serta Analisanya
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 : Variabel
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=politeknik negeri jakarta (Terdapat
pesan error)
$ VPT2=” politeknik negeri jakarta”
$ echo VPT2
$ echo $VPT2
3.
Menggabungkan dua variable
atau lebih
$ V1=broadband
$ V2=’:’
$ V3=multimedia
$ 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 V1=broadband V2=’:’
V3=multimedia
echo “Pemrograman shell” echo $V1$V2$V3
V3=PNJ
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 amir
$ 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
Nama Anda :
Amir
Alamat :
Jl semangka 67
Kota :
Depok
Hasil
adalah : Amir,
Jl semangka di Depok
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
$ vi prog02.sh
#!/bin/sh
# prog02.sh
# membaca nama dan alamat
echo –n “Nama Anda : “
read nama
echo
–n “Alamat : “
read alamat
echo –n “Kota : “
read
kota
echo
echo “Hasil adalah : $nama, $alamat
di $kota”
5.
Eksekusi program prog02.sh
$ . prog02.sh
Nama
Anda : Amir Alamat : Jl semangka 67 Kota : Depok
Hasil
adalah : Amir,
Jl semangka di Depok
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 di bawah , 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
$ . 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
$ . prog04.sh
$ . prog04.sh amir hasan
$ . prog04.sh amir hasan badu ali
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
$ . prog04.sh
$ . prog04.sh
amir hasan badu ali
5. Membuat shell script prog04.sh versi 3 dengan menambahkan 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
$ . prog04.sh amir hasan badu ali
1.
String tidak diketemukan, maka status exit adalah 1
$ grep xyz /etc/passwd
$ echo $?
2.
String diketemukan, 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
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=Dony
$ test $NAMA = dony
$ echo $?
$ test $NAMA = Chevin
$ echo $?
2.
Aplikasi test dengan
konstruksi if
$ vi prog06.sh #!/bin/sh
# prog06.sh
echo –n “NAMA = “ read NAMA
if test “$NAMA” = dony then
echo “Selamat Datang $NAMA” else
echo “Anda bukan dony, sorry!” fi
3.
Jalankan program
prog06.sh dengan memasukkan NAMA = amir dan NAMA = <CR> perhatikan hasil
tampilannya
$ . prog06.sh [NAMA = Dony]
$ . 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” = Dony ]
then
echo “Selamat Datang $NAMA”
else
echo “Anda bukan Dony, sorry!”
fi
5.
Jalankan program prog06.sh
dengan memasukkan NAMA = amir
$ . prog06.sh [NAMA = Dony]
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 masih 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
: Operatot 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 Dony Ariyus Randyka Fransisco 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
done
fi clear
break
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
done
fi clear
break
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
fi
echo “OK !”
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 $?
3.
Jalankan program
fungsi.sh
$ . fungsi.sh
4.
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”
5.
Jalankan program
fungsi.sh
$ . fungsi.sh
6.
Menggunakan variable
pada fungsi dengan memodifikasi file fungsi.sh
$ 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”
7.
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 :
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
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.
Gambar di atas merupakan 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”.









Tidak ada komentar:
Posting Komentar