Kamis, 03 November 2022

Praktikum 6 Pemrograman Shell

Judul Laporan

"Laporan Praktikum Pemrograman Shell"

Pokok Bahasan

- Pemrograman Shell

Tujuan Belajar

Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
- Mempelajari elemen dasar shell script
- Membuat program shell interaktif
- Menggunakan parameter dalam program
- Mempelajari test kondisi serta operator logic yang terkait dengan instruksi test
- Mengenal variabel built-in dari shell
- Membuat aplikasi dengan shell menggunakan konstruksi if-then-else
- Menggunakan struktur case-esac
- Loop dengan while, for, do while
- Membuat fungsi dan mengetahui cara memanggil fungsi tersebut

Abstrak

Dalam era perkembangan teknologi seperti saat ini, dunia memerlukan teknologi informasi yang dapat memudahkan kehidupan masyarakat. Untuk mencapai tujuan tersebut, Linus Torvalds mengembangkan sistem operasi yang secara umum merupakan sistem operasi sumber terbuka (open source). Sistem operasi yang dikembangkan itu ialah Linux. Linux merupakan sistem operasi yang bersifat open source, maksudnya ialah setiap pengguna Linux dapat menggunakannya tanpa menggunakan lisensi apapun dan juga dapat mengembangkannya menjadi distro (distribusi) Linux baru. Oleh karena itu, pada praktikum ini dilakukan percobaan menggunakan perintah-perintah untuk pemrograman shell. Praktikum dilakukan dengan menggunakan software virtualbox dari Oracle yang dijalankan di atas sistem operasi Windows 10. Dari percobaan mengeksekusi perintah-perintah untuk pemrograman shell, diperoleh hasil percobaan yang sesuai dengan panduan praktikum yang telah disediakan.

Kata kunci : Sistem operasi, Linux, shell, pemrograman shell, shell scripting.

Teori Singkat

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

        Dalam memproses data di komputer, kita menyimpan data tersebut dalam memori komputer. Memori tersebut dibagi dalam lokasi-lokasi dengan alamat tertentu. Programmer harus memberi nama lokasi tersebut dengan nama variabel.

        Ada 2 macam variabel dalam Linux, variabel sistem biasanya dituliskan dengan huruf besar semua dan variabel user. Cara mendeklarasikan variabel juga hampir sama: variablename=value
Harap diperhatikan, tidak boleh ada spasi!

Contoh: $ x=10
Artinya mengisikan angka 10 ke dalam variabel x
Contoh variabel sistem:


Variabel User

        Aturan penamaan variabel memiliki aturan yang hampir sama dengan penamaan dalam pemrograman komputer bahasa lain:

Nama variabel harus dimulai dengan huruf atau underscore (_), diikuti dengan huruf lain atau angka;
Jangan menggunakan spasi, seperti sudah dicontohkan di atas;
Variabel adalah case-sensitive, huruf besar dan huruf kecil berbeda;
Variabel kosong (NULL) tidak akan menghasilkan nilai;
Jangan menggunakan karakter khusus seperti: ?, *, dll untuk nama variabel.

3. MEMBACA KEYBOARD

        Nilai variable dapat diisi melalui keyboard (stdin) dengan intruksi read. Program yang selama ini kita buat, nilainya telah ditentukan sebelumnya, program- program tersebut tidak mendapatkan input dari user. Program - program tersebut hanya melakukan hal yang sama setiap waktu.

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 instruksi-awal
then
 instruksi1
 instruksi2
 ...............
fi

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

        Statement builtin if berfungsi untuk melakukan seleksi berdasarkan suatu kondisi tertentu. Secara umum ada dua bentuk umum sintak perintah if , seperti ditunjukkan dibawah ini

if instruksi1
then
 instruksi1.1
 instruksi1.2
 ........
else
 instruksi2.1
 instruksi2.2
 ........
fi

        Kalau diperhatikan, perintah if ini hampir sama dengan perintah if pada bahasa-bahasa tingkat tinggi, seperti Pascal, C, dan juga hampir sama dengan perintah if pada batch file-nya DOS. Pada bentuk pertama maupun bentuk kedua dari sintak diatas adalah statement dalam blok if...fi akan dieksekusi apabila kondisi if terpenuhi. Dari kedua bentuk diatas dapat pula ditambahkan perintah untuk pengecekan kondisi dengan elif (else if).

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 ]

Tanda [ 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(-a), OR(-o), dan NOT(!). Operator ini menggabungkan hasil ekspresi sebagai berikut :


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 

        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 antaran lain:


        Selain digunakan untuk perhitungan aritmatik, perintah `expr` juga cukup handal untuk melakukan manipulasi string, untuk lebih jelas silahkan lihat halaman manual dari expr dengan mengetikkan `man expr`.

14. INSTRUKSI EXIT 

        Program dapat dihentikan (terminated/selesai) dengan intruksi exit. Sebagai nilai default program tersebut akan memberikan status exit 0.

15. KONSTRUKSI CASE

        Pernyataan case memiliki fungsi yang sama dengan pernyataan if yaitu memeriksa suatu ekspresi dan melakukan suatu proses bila ekspresi tersebut bernilai benar, hanya saja pernyataan case memiliki kelebihan yaitu dapat menggunakan wildcards dalam ekspresi yang akan diperiksa. Perintah case hampir sama dengan if-then-elif-else-fi karena dapat memilih dari banyak kondisi. Sebagian orang lebih suka menggunakan case...esac dibanding multi level-if karena lebih mudah dibaca.Case digunakan untuk menyederhanakan pemakaian if yang berantai, sehingga dengan case kondisi dapat dikelompokan lebih jelas dan mudah untuk ditulis. 

case variable in

match1)
 instruksi1.1
 instruksi1.2
 ........
 ;;
match2 )
 instruksi2.1
 instruksi2.2
 .......
 ;;
*)
 instruksi3.1
 instruksi3.2
 .......
 ;;
esac

Case diakhiri dengan 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 perulangan dengan menggunakan variable yang ada pada setiap perulangan akan diganti dengan nilai yang berada pada daftar (list).

for var in str1 str2 ....
strn
VI - 9
do
 instruksi1
 instruksi2
 ............
done

17. 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:


While digunakan untuk perulangan instruksi, yang umumnya dibatasi dengan sustu kondisi. Selama kondisi tersebut true, maka pengulangan akan terus dilakukan. Loop akan berhenti, bila kondisi false, 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 

        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 :

F1 ( )
{
 .................
 .................
 return 1
}

        Variabel dapat di definisikan dalam fungsi sebagai variabel local atau global. Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi, jangan sampai bentrok dengan nama variable yang sama di luar fungsi, sehingga tidak terjadi isi variable berubah.

Jawaban Pertanyaan Pendahuluan

        Sebagai tugas pendahuluan, bacalah dasar teori diatas kemudian buatlah program Shell untuk Latihan 1 sampai dengan 5.

Percobaan dan Hasil serta Analisanya

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 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



 

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 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
Gambar di atas merupakan program copy file, dimana pada gambar di atas 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.

Gambar di atas merupakan program memeriksa nama direktori. Seperti yang terjadi pada latihan no. 1 tadi, 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.

Gambar di atas merupakan shell script pph.sh, 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, maka hasilnya tampil seperti gambar di atas.


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!
Gambar di atas merupakan tahapan membuat 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 seperti gambar di atas dan jika tidak, akan muncul informasi kesalahan dan tampil seperti gambar di atas.


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!


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”.  

Kesimpulan

Sistem operasi Linux merupakan sistem operasi open source yang dapat digunakan dan dikembangkan secara bebas tanpa lisensi. Bagi sebagian orang, Linux terasa lebih sulit daripada Windows karena kurang familiar di kalangan masyarakat umum. Meski begitu, sistem operasi Linux tetap banyak digemari khususnya oleh para pegiat teknologi, misalnya system administrator, developer, devops engineer, network engineering, dan cyber security. Pada praktikum 6 ini telah dilakukan percobaan menggunakan perintah-perintah pemrograman shell. Shell script dibuat dengan editor teks (ASCII editor) dan umumnya diberikan ekstensi “.sh”.serta Variable shell adalah variable yang dapat mempunyai nilai berupa nilai String. Variable harus dimulai dengan alfabet, disusul dengan alfanumerik dan karakter lain.  Variabel dapat ditulis dalam huruf kecil atau huruf besar atau campuran keduanya. Nilai variable dapat diisi melalui keyboard (stdin) dengan instruksi read. Instruksi test digunakan untuk memeriksa kondisi dari sebuah ekspresi. Ekspresi terdiri dari factor dan operator yang dipisahkan oleh spasi. Hasil test akan memberikan nilai berupa status exit, yaitu 0 bila ekspresi sesuai, bila tidak maka hasil adalah <> 0. Ada beberapa jenis operator, yaitu operator untuk test, test untuk file dan direktori, logical && dan ||, operator bilangan bulat, dan operator logical. Dalam pemrograman shell kita juga bisa menggunakan perintah percabangan if,case dan perulangan while in.selain itu kita juga bisa membuat sebuah fungsi yang nantinya bisa dipanggil oleh file lain. Dengan dilaksanakannya praktikum ini diharapkan dapat menambah pemahaman mengenai pemrograman shell.

Daftar Pustaka/Referensi




Tidak ada komentar:

Posting Komentar