POKOK   BAHASAN: ·         Pemrograman   Shell TUJUAN   BELAJAR: Setelah   mempelajari   materi   dalam   bab   ini,   mahasiswa   diharapka...

PRAKTIKUM PEMROGRAMAN SHELL PADA UBUNTU 18.0



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

PERCOBAAN:

1.                     Login sebagai user.

2.                     Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini kemudian   tambahkan tangkapan layer/screenshot hasil eksekusi tiap 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 : 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 : Mas Fathur 

Alamat : Jl Inpres 2 

Kota Bogor

Hasil adalah : Mas Fathur, Jl Inpres 2 di Bogor

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

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

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

Kesimpulan:

  • 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.
  • Setiap program setelah selesai dieksekusi akan memberikan informasi melalui variable spesial $?.  Indikasi yang diberikan adalah :

- Bila program berakhir dengan sukses, $? = 0

- Bila program berakhir dengan error,    $? = 1

  • 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

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

0 Comments: