Praktikum 6 - Pemrograman Shell
PRAKTIKUM 6
PEMROGRAMAN SHELL
SISTEM OPERASI
DOSEN PENGAMPU: MOHAMMAD FATHURAHMAN, S.T., M.T.
DISUSUN OLEH:
ALVIANA SIRAJUDIN – 2103421024
BM 5A
PROGRAM STUDI BROADBAND MULTIMEDIA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI JAKARTA
2033
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.
DASAR TEORI
#!/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.
nama_var = nilai_var
VPT=poltek
i=5
VPT =poltek ##error
VPT= poltek ##error
VPT=poltek
echo $VPT
Gaji=450000
echo $Gaji
echo $VPT $Gaji
VPT=poltek
VPT2=”politeknik negeri jakarta”
- Bila program berakhir denga sukses, $?=0
- Bila program berakhir dengan error, $?tidak samadengan 0. nilai dari status exit dapat dilihat melalui instruksi echo $?
- Operator untuk text
- Test untuk files dan direktori
· 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.
A=5
B=$A +1 ## error
while kondisi
do
instruksi1
instruksi2
………………
done
Symbol instruksi dummy adalah ➔ :
F1( ) {
……..
……..
return 1
}
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 : 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 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” 6 . Eksekusi prog04.sh tanpa parameter dan dengan 4 parameter $ . prog04.sh $ . prog04.sh amir hasan badu ali
|
Percobaan 5 : Status Exit
|
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
|
Percobaan 7 : Konstruksi if then else
|
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 antar $ 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 $ 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 |
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 denga 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
|
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
|
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” $ . 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 5. 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” 6. Jalankan program fungsi.sh $ . fungsi.sh |























Komentar
Posting Komentar