PEMROGRAMAN
SHELL
Praktikum
15
A. T U J U A N
B. DASAR TEORI
Pembuatan program aplikasi ini berdasarkan pada teori-teori yang
sudah dibahas di bab atau praktikum sebelumnya, seperti: teori
tentang expresi dan test untuk operasi aritmatika, fungsi pada materi
praktikum 9, awk juga telah dijelaskan pada praktikum 11 dan 12,
sedangkan pembahasan user interface/GUI dan dialog pada modul
praktikum 14 dan modul praktikum yang lainnya. Sekedar untuk
mengingatkan
kembali
perintah/statement
yang
berikut
banyak
penulisan
digunakan
sintak
dalam
dari
pembuatan
program aplikasi:
:Sintak
Nama_fungsi () { command; command; }
Function nama_fungsi { command; command; }Function
nama_fungsi () { command; command; }
Sintak:
Background
40
41
42
43
44
45
46
47
C. PROSEDUR
1. Masuk ke sistem operasi Linux.
2. Login sebagai user yang telah ditentukan.
3. Buatlah program seperti pada percobaan dan program latihan.
4. Catatlah hasil dari setiap program pada prosedur no.3 sebagai
laporan sementara.
D. PERCOBAAN
1. Pemrograman shell untuk aplikasi schedule reminder :
#!/bin/bash
clear
echo **************************************
echo ********* SCHEDULE REMINDER **********
echo **************************************
echo * Date today:`date | awk {print $3,$2,$6} ` | time
:`date | awk '{print $4}'` *
echo **************************************
echo
echo -n Massages =
read pesan
echo
echo -n Time (hh:mm:ss) =
read waktu
echo
echo "**************************************"
echo "**** do not exit terminal untill *****"
echo "********** the bell rings ************"
echo "**************************************"
duration=2000
volume=$'\xff'
mute=$'\x80'
134
function mknote ()
{
for t in `seq 0 $duration`
do
test $(( $t % $1 )) = 0 && echo -n $volume || echo -n $mute
done
}
e=`mknote 50`
g=`mknote 45`
a=`mknote 36`
b=`mknote 32`
c=`mknote 30`
cis=`mknote 29`
d=`mknote 27`
e2=`mknote 24`
n=`mknote 32767`
a=1
while (a==1)
do
cek="`date | awk '{print $4}'`";
if [ "$waktu" == "$cek" ]
then
echo -n "$n$n$n$n$e2$c$c$c$$c$c$c$e2$e2$c$c$c$n$n$n$n$e2$c$c$c$ " > /dev/dsp
#nada bisa diubah sesuai keinginan
d=`echo "Time
: $waktu
135
seri(){
load
echo ""
echo -e "
\033[34m
RANGKAIAN SERI \033[0m"
echo ""
echo -n -e "\033[34m masukkan banyak resistor yang anda hitung :
\033[0m"
read w
echo ""
echo -e "\033[2;33m resistor dalam satuan ohm\033[0m"
echo ""
let "x=1"
let "y=0"
g=0
while let "x <=$w"
do
let "x=x+1"
let "y=y+1"
echo -n -e "\033[34m masukkan resistor $y : \033[0m"
read a
g=`echo "$g+$a" | bc`;
done
echo
echo -e "\033[34m hasil perhitungan nilai rangkaian yang di
rangkai seri adalah : $g ohm \033[0m"
sleep 1.75
jawab=`zenity --title "" --width 400 --entry --text "
apakah anda ingin menjalankannya lagi(y/t)? : "`
case $jawab in
y | Y | ya | Ya | YA )
clear
echo "loading. ."
sleep 1
clear
dor
;;
t | T | tidak | TIDAK | *)
echo
clear
tput cup 5 10
sleep 1
v=`zenity --title "== ttttttttt ==" --width 400 --entry --text "
*--*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
....TERIMAKASIH TELAH MENGGUNAKAN PROGRAM INI....
-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"`
echo $v;;
esac
return 0
}
par(){
load
echo ""
echo -e "
\033[34m
RANGKAIAN PARAREL \033[0m"
echo ""
echo -n -e "\033[1;35m masukkan banyak resistor yang anda hitung :
\033[0m"
read w
echo ""
136
echo
-e "\033[2;33m resistor dalam satuan ohm\033[0m"
echo ""
echo -n -e "\033[34m masukkan nilai resistor ke 1 : \033[0m"
read z
g=$z
let "x=1"
while let "x <=$w-1"
do
let "x=x+1"
echo -n -e "\033[34m masukkan nilai resistor ke $x : \033[0m"
read a
rum=`echo "$g*$a" | bc`;
rum2=`echo "$g" | bc`;
rum3=`echo "$rum2+$a" | bc`;
g=`echo "scale=2;$rum/$rum3" | bc`;
done
echo
echo -e "\033[34m Hasil perhitungan nilai rangkaian yang di
rangkai pararel adalah : $g ohm \033[0m"
sleep 1.75
jawab=`zenity --title "" --width 400 --entry --text "
apakah anda ingin menjalankannya lagi(y/t)? : "`
case $jawab in
y | Y | ya | Ya | YA )
clear
echo "loading. ."
sleep 1
clear
dor
;;
t | T | tidak | TIDAK | *)
echo
clear
tput cup 5 10
sleep 1
v=`zenity --title "== tttttttt ==" --width 400 --entry --text "
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
....TERIMAKASIH TELAH MENGGUNAKAN PROGRAM INI....
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"`
;;
esac
return 0
}
apik(){
h=`date`
f=`case $(date +%H) in
00|01|02|03|04|05|06|07|08|09)
echo "SELAMAT PAGI"
;;
10|11|12|13|14)
echo
"SELAMAT SIANG"
;;
15|16|17|18)
echo
"SELAMAT SORE"
;;
*)
echo
"SELAMAT MALAM"
;;
137
esac`
b=`zenity --title "=== $f ===" --width 400 --entry --text "
$h
----------------------------------------------------------------*******-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*******
* ANDA MEMASUKI PROGRAM UNTUK MENGHITUNG NILAI RESISTOR *
*******-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*******
----------------------------------------------------------------*-*-*-*-*-* pilihlah model rangkaianya *-*-*-*-*-*
==>
dirangkai seri pil no 1
<==
==>
dirangkai pararel pil no 2 <==
==>
lainnya selesai
<==
PILIHAN ANDA : "`
echo $b
case $b in
1 | seri | Seri | SERI) seri ;;
2 |PARAREL| PARALEL | pararel | paralel | Pararel | Paralel ) par
;;
* )
ab=`zenity -title " ingat hanya no 1&2" -width 400 -entry -text "
apakah anda ingin menjalankannya lagi(y/t)? : "`
case $ab in
y | Y | ya | Ya | YA )
clear
echo "loading. ."
sleep 1
clear
dor
;;
t | T | tidak | TIDAK | *)
echo
clear
tput cup 5 10
sleep 1
v=`zenity --title "== tttttttt ==" --width 400 --entry --text "
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
....TERIMAKASIH TELAH MENGGUNAKAN PROGRAM INI....
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"`
echo $v;;
esac;;
esac
}
dor(){
b=`zenity -title "== PILIHAN ANDA ==" -width 400 -entry -text "
*-*-*-*-*-* pilihlah model rangkaianya *-*-*-*-*-*
==>
dirangkai seri pil no 1
<==
==>
dirangkai pararel pil no 2 <==
==>
lainnya selesai
<==
PILIHAN ANDA : "`
echo $b
case $b in
1 | seri | Seri | SERI) seri ;;
2 |PARAREL| PARALEL | pararel | paralel | Pararel | Paralel ) par
;;
* )
ab=`zenity -title " ingat hanya no 1&2" -width 400 -entry- text "
138
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
....TERIMAKASIH TELAH MENGGUNAKAN PROGRAM INI....
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"`
echo $v;;
esac;;
esac
}
apik
139
}
maen() {
rand=$[($RANDOM %10) +1]
let a=1;
while let "$a <= 5"
do
angka=`zenity --title "$nama's Game" --entry --text "Enter a
number:"`;
echo $angka;
let a=$a+1;
if [ $angka -eq $rani ]; then
zenity --title "Haha...$nama winner" --warning --text
"$nama...!!You Win" --height 200 --width 250
lagi;
else
kalah=`zenity --title "$nama Try again" --warning --text
"$nama...!!You are not lucky" --height 200 --width 300`;
echo $kalah;
fi
done
}
maen;
zenity --title "Hehe..$nama loser" --warning --text "Sorry...
$nama...You lose" --height 200 --width 300
lagi;
140
echo
echo
echo
echo
echo
}
-e
-e
-e
-e
-e
"\033[$i\033[1;0H
"\033[$i\033[2;0H
"\033[$i\033[3;0H
"\033[$i\033[4;0H
"\033[$i\033[5;0H
hurufl(){
i=`back`
echo -e "\033[$i\033[0;5H
echo -e "\033[$i\033[1;5H
echo -e "\033[$i\033[2;5H
echo -e "\033[$i\033[3;5H
echo -e "\033[$i\033[4;5H
echo -e "\033[$i\033[5;5H
echo -e "\033[$i\033[5;6H
echo -e "\033[$i\033[5;7H
echo -e "\033[$i\033[5;8H
}
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
hurufu(){
i=`back`
echo -e "\033[$i\033[3;10H
echo -e "\033[$i\033[3;13H
echo -e "\033[$i\033[4;10H
echo -e "\033[$i\033[4;13H
echo -e "\033[$i\033[5;10H
echo -e "\033[$i\033[5;11H
echo -e "\033[$i\033[5;12H
echo -e "\033[$i\033[5;13H
}
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
hurufp(){
i=`back`
echo -e "\033[$i\033[3;15H
echo -e "\033[$i\033[3;16H
echo -e "\033[$i\033[3;17H
echo -e "\033[$i\033[3;18H
echo -e "\033[$i\033[4;15H
echo -e "\033[$i\033[4;18H
echo -e "\033[$i\033[5;15H
echo -e "\033[$i\033[5;16H
echo -e "\033[$i\033[5;17H
echo -e "\033[$i\033[5;18H
echo -e "\033[$i\033[6;15H
echo -e "\033[$i\033[7;15H
}
hurufh(){
i=`back`
echo -e "\033[$i\033[0;20H
echo -e "\033[$i\033[1;20H
echo -e "\033[$i\033[2;20H
echo -e "\033[$i\033[3;20H
echo -e "\033[$i\033[3;21H
echo -e "\033[$i\033[3;22H
echo -e "\033[$i\033[4;20H
echo -e "\033[$i\033[4;22H
echo -e "\033[$i\033[5;20H
echo -e "\033[$i\033[5;22H
}
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
141
hurufU(){
i=`back`
echo -e "\033[$i\033[0;26H
echo -e "\033[$i\033[0;29H
echo -e "\033[$i\033[1;26H
echo -e "\033[$i\033[1;29H
echo -e "\033[$i\033[2;26H
echo -e "\033[$i\033[2;29H
echo -e "\033[$i\033[3;26H
echo -e "\033[$i\033[3;29H
echo -e "\033[$i\033[4;26H
echo -e "\033[$i\033[4;29H
echo -e "\033[$i\033[5;26H
echo -e "\033[$i\033[5;27H
echo -e "\033[$i\033[5;28H
echo -e "\033[$i\033[5;29H
}
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
\033[0m"
clear
while true
do
hurufi
hurufl
hurufu
hurufp
hurufh
hurufU
sleep 1s
done
142
(2
" = echo -n "Banyak Porsi
read jumma
;let bayarma=jumma*4000
"pilma="Gado-gado $jumma piring
break
;;
(3
" = echo -n "Banyak Porsi
read jumma
;let bayarma=jumma*6000
"pilma="Rujak $jumma piring
break
;;
(t
bayarma=0
"pilma="tidak memesan makanan
break
;;
(*
"'echo "Pilihan 1-3 atau 't
echo
;;
esac
done
echo
while true
do
echo -n "Masukkan pilihan minuman anda (atau 't' untuk tidak
" :memesan)
read pil
case $pil in
(4
" = echo -n "Banyak Gelas
read jummi
let bayarmi=jummi*1500
"pilmi="Es teh $jummi gelas
break
;;
(5
" = echo -n "Banyak Gelas
read jummi
let bayarmi=jummi*2500
"pilmi="Es jeruk $jummi gelas
break
;;
(6
" = echo -n "Banyak Gelas
read jummi
let bayarmi=jummi*3500
pilmi="Es degan $jummi gelas
break
;;
(t
bayarmi=0
"pilmi="tidak memesan minuman
break
;;
(*
143
E. Latihan
1. Dengan menggunakan parameter posisi buatlah program aplikasi
kamus Indonesia ke jawa atau sebaliknya, sebagai bantuan
buatlah file database yang berisi terjemahan setiap kata.
2. Buatlah program aplikasi database sederhana tentang biodata
pasien baru maupun lama pada sebuah rumah sakit yang berisi
data sebagai berikut :
- ID, Nama, Umur, Alamat, Keadaan dan Diagnosa pasien.
Gunakan user interface dan dialog untuk Entry data pasien,
menyimpan data, dan tampilan daftar pasien.
144