PRAKTIKUM 6 : PEMOGRAMAN 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 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.

  

DASAR TEORI:

 

1.   SHELL SCRIPT

Shell script dibuat dengan editor teks (ASCII editor) dan umumnya diberikan ekstensi “.sh”.  Script selalu diawali dengan komentar, yang dimulai dengan tanda #, disambung dengan ! dan nama shell yang digunakan.

#!/bin/sh         

# Program shell   

#

var1=x                  

var2=8

a)      Awal dari program shell, komentar awal ini akan dibaca oleh system, kemudian system mengaktifkan program shell (/bin/sh) yang tertera di situ.  Program shell dapat dipilih, misalnya /bin/csh, /bin/ksh dan lainnya

b)      Adalah komentar, sebagai dokumentasi, baris ini akan diabaikan oleh program shell

c)      Penggunaan variable (assignment), tidak boleh ada spasi di antara nama variable dan konstanta

 

2.   VARIABEL

Variable shell adalah variable yang dapat mempunyai nilai berupa nilai String.  Tata penulisan variable adalah sebagai berikut :

nama_var = nilai_var

Variable harus dimulai dengan alfabet, disusul dengan alfanumerik dan karakter lain.  Variabel dapat ditulis dalam huruf kecil atau huruf besar atau campuran keduanya.  Shell membedakan huruf besar dan huruf kecil (case sensitive), contoh :

VPT=poltek i=5

Pemberian nilai variable tidak boleh dipisahkan dengan spasi, karena shell akan menganggap pemisahan tersebut sebagai parameter, contoh :

VPT   =poltek    ##error VPT=   poltek  ##error

Untuk melihat nilai/isi dari sebuah variable, gunakan tanda $ di depan nama variable tersebut.  Pada shell, instruksi echo dapat menampilkan isi variable tersebut, contoh :

VPT=poltek

echo $VPT 

 

Gaji=450000

echo $Gaji

echo $VPT $Gaji

Bila menggunakan string yang terdiri dari lebih dari satu kata, maka string tersebut harus berada dalam tanda kutip atau apostrof, contoh :

VPT=poltek

VPT2=”poltek elektronika ITS”

 

3.   MEMBACA KEYBOARD

Nilai variable dapat diisi melalui keyboard (stdin) dengan instruksi read.

 

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 dan $9.  Nama program she ll (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 / argumen sebuah script ($@ mempunyai arti yang 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 spesial $?.  Indikasi yang diberikan adalah :

-          Bila program berakhir dengan sukses, $? = 0

-          Bila program berakhir dengan error,    $? ≠ 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 selanjutnyua masuk ke dalam blok then.  Bila tidak 0, maka alur program diteruskan setelah kunci kata fi.

 

 

7.   KONSTRUKSI IF THEN ELSE

 

if instruksi1

            then

                    instruksi1.1  

                   instruksi1.2

                      ………………             else

                   instruksi2.1     

              instruksi2.2

                 ………………

            fi

Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah else akan dijalankan.

 

8.   INSTRUKSI TEST

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.

      Operator untuk test

Operator

0 atau TRUE, jika

string1 = string2 string1 != string2

-n string

-z string

Identical

Not identical

String is not null

String is null

 

      Test untuk files dan directory

Test dapat dilakukan untuk memeriksa apakah file ada (Exist), dapat dibaca, dapat ditulis, kosong dan lainnya.

Operator

0 atau TRUE, jika

-f namafile

-d namafile

-r namafile

File ada, file biasa

File ada, file adalah direktori

File dapat dibaca

-w  namafile

-x  namafile

-s namafile

-w namafile

File dapat ditulis

File adalah executable

File ada dan tidak kosong

File dapat ditulis

Untuk memudahkan pembacaan (readability), test dapat ditulis dengan

[ ekspresi ]

[ 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 alternatif untuk if then else.  Notasi && dan || sering ditemukan dalah 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 karena itu, instruksi2 tidak dijalankan.  Sebaliknya bila hasil instruksi1 adalah TRUE(0), maka instruksi2 dijalankan

      instruksi1 || instruksi2

shell akan menge ksekusi instruksi1, 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.

Operator

0 atau TRUE, jika

i1 –eq i2 i1 –ge i2 i1 –gt i2 i1 –le i2 i1 –lt i2 i1 –ne i2

Bilangan sama

Lebih besar atau sama dengan

Lebih besar

Lebih kecil atau sama dengan

Lebih kecil

Bilangan tidak sama

 

11.  OPERATOR LOGICAL (TEST LEVEL)

Logical operator terdiri dari AND, OR dan NOT.  Operator ini menggabungkan hasil ekspresi sebagai berikut :

NOT : symbol !

 

!

True

False

False

True

 

AND : symbol -a

V1

V2

V1 –a V2

False

False

False

False

True

False

True

False

False

True

True

True

OR : symbol -o

V1

V2

V1 –o V2

False

False

False

False

True

True

True

False

True

True

True

True

  

12.  KONSTRUKSI IF THEN ELSE IF

if instruksi1 then

                  instruksi1.1                   instruksi1.2

………………

            elif instruksi2

then

 

                  instruksi2.1                   instruksi2.2

                  ………………

else

                  instruksi3.1                   instruksi3.2

                  ………………

fi

 

Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah else akan dijalankan.

 

13.  HITUNGAN ARITMETIKA

Tipe dari variable SHELL hanya satu yaitu STRING.  Tidak ada tipe lain seperti Numerik, Floating, Boolean atau lainnya.  Akibatnya variable ini tidak dapat membuat perhitungan aritmetika, misalnya :

A=5

B=$A +1 ## error

UNIX menyediakan utilitas yang bernama expr yaitu suatu utilitas yang melakukan aritmetika sederhana.

 

14.  INSTRUKSI EXIT

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

  

15.  KONSTRUKSI CASE

Case digunakan untuk menyederhanakan pemakaian if yang berantai, sehingga dengan case, kondisi dapat dikelompokkan secara logis dengan 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 pengulangan dengan menggunakan var yang pada setiap pengulangan akan diganti dengan nilai yang berada pada daftar (list).

 

for var in str1 str2 …..strn do

                  instruksi1                     instruksi2

……………… done

 

17.  KONSTRUKSI WHILE

While digunakan untuk pengulangan instruksi, yang umumnya dibatasi dengan suatu kondisi.  Selama kondisi tersebut TRUE, maka pengulangan terus dilakukan. Loop akan berhenti, bila kondisi FALSSE, 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 karena itu, instruksi dummy dapat digunakan sebagai kondisi forever pada loop (misalnya while).

Simbol instruksi dummy adalah  ⇒ :

 

19.  FUNGSI

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 didefinisikan dalam fungsi sebagai variable 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.

 

TUGAS PENDAHULUAN:

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

Perobaan 1 : Membuat Shell Script 

1. Buatlah file prog01.sh dengan editor vi 

  • $ vi prog01.sh
  • #!/bin/sh
  • # Program shell 
  • #
  • var1=x
  • var2=8

    Menuliskan prog01.sh menggunakan Vi Editor.

2. Untuk menjalankan shell, gunakan notasi TITIK di depan nama program 
  • $ . prog01.sh


    Menjalankan program prog01.sh

3. Untuk menjalankan shell, dapat juga membuat executable file dan dieksekusi dari current directory 
  • $ chmod +x prog01.sh


    Menjalankan prog01.sh dengan menjadikan file tersebut bersifat excutable file.

Percobaan 2 : Variable 

1. Contoh menggunakan variable pada shell interaktif

  • $ VPT=poltek 
  • $ echo $VPT

    Menggunakan variabel VPT untuk menjalankan echo.

2. Pemisahan 2 kata dengan spasi menandakan eksekusi 2 buah intruksi. Karakter $ harus ada pada awal nama variable untuk melihat isi variable tersebut, jika tidak, maka echo akan mengambil parameter tersebut sebagai string. 

  • $ VPT2=poltek elektronika (terdapat pesan error)
  • $ VPT2=”poltek elektronika”
  • $ echo $VPT2 

    Terdapat error mengenai intruksi yang terdapat dua kata dalam satu variabel yang tidak menggunakan kutip. Untuk memaggil variabel untuk dicetak perlu menggunkan $. Jika tidak, maka echo akan mengambil parameter tersebut sebagai string.

3. Menggabungkan dua variable atau lebih 
  • $ V1=poltek
  • $ V2=’:‘
  • $ V3=elektronika 
  • $ V4=$VI$V2$V3 
  • $ echo $V4

    Untuk memanggil kode lainnya diperlukan penambahan $ disetiap variabel nya. Apabila tidak menggunakan $ maka variabel tersebut dianggap string.

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 $V3ITS 
  • $ echo ${V3}ITS


    Untuk menggabungkan sebuah variabel dengan string lain tidak dapat secara langsung seperi pada perintah 2 diatas. Jika penulisan nya seperti $V3ITS maka instruksi echo akan menampilkan sting kosong karena variabel tersebut dianggap sebagai variabel yang belum terdefinisikan. Untuk menggabungkan isi variabel dengan string lain digunakan tanda {} untuk memisahkan variabel dengan string lain tersebut. 

5. Variable dapat berisi instruksi, yang kemudian bila dijadikan instruksi tersebut akan dieksekusi 
  • $ CMD=who 
  • $ $CMD 
  • $ CMD=”1s -1”
  • $ $CMD 

    Variabel CMD diisi oleh instruksi who, maka apabila variabel CMD dipanggil isntruksi who yang tedapat dalam variabel CMD akan dieksekusi. Begitu juga dengan variabel CMD yang disi dengan perintah ls –l, dan tampil dengan output menampilkan file dile pada direktori.

6. Membuat shell script, contoh prog01.sh sebagai berikut : 
  • $ vi prog01.sh 
  • #!/bin/sh
  • V1=poltek
  • V2=’:‘ 
  • V3=elektronika 
  • echo “Pemrograman shell” 
  • echo $V1$V2$V3 
  • V3=ITS 
  • echo $V1$V02 di $V3

    


    Membuat prog01.sh menggunakan editor Vi

7. Menjalankan prog01.sh
  • $ . prog01.sh 
  • $ prog01.sh (TERDAPAT PESAN ERROR) 
  • $ ./prog01.sh (TERDAPAT PESAN ERROR)
  • $ chmod +x prog01.sh 
  • $ ./prog01.sh
    

    Menampilkan hasil dari prog01.sh. Namun ada error pada intruksi prog01.sh karena prog01.sh bukan sebuah command dan apabila ingin memanggil dengan ./prog01.sh harus mengubah program tersebut ke dalam excutable file dengan menggunakan chmod +x prog01.sh.

Percobaan 3 : Membaca Keyboard 
1. Menggunakan intruksi read 
  • $ read nama 
  • amir 
  • $ echo $nama 

    Dengan menggukana read, terminal akan membaca input yang kita maksukkan, dan apabila dicetak maka akan menampilkan variabel dari yang kita input sebelumnya.

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”
    

    Membuat prog02.sh dengan menggunakan editor Vi.

3. Eksekusi program prog02.sh
  • $ . prog02.sh
  • Nama Anda : 
  • Meu 
  • Alamat : 
  • Bojonggede
  • Kota : 
  • Bogor 
  • Hasil adalah : Meu, bojonggede di bogor

    Dengan menampilka program yang dapat kita input datanya dan memanggil kembali data yang kita masukkan melalui variabel menggunakan echo.

4. Instruksi echo secara otomatis memberikan baris baru, untuk menghindari hal tesebut gunakan opsi –n, untuk menghilangkan baris baru. Modifikasi program prog02.sh kemudian eksekusi! 
  • $ 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”

    Me-rewrite prog02.sh dengan menambahkan -n pada echo data yang akan diinputkan.

5. Eksekusi program prog02.sh $ . prog02.sh

    Membuat apa yang akan kita input menjadi sebaris dengan echo yang dibuat.

6. Variable kosong adalah varabel yang tidak mempunyai nilai. 
  • $ read nama 
  • <CR>
  • $ echo $nama
  • $ A=
  • $ B=” ” 
  • $ C=$A$B 
  • $ echo $C 

    Seluruh perintah dari variabel diatas merupakan variabel kosong atau tidak mempunyai nilai. Maka pada saat variabel dipanggil tidak akan menamilkan apapun.

7. Variable dapat didistribusikan dengan hasil eksekusi dari sebuah instruksi.
  • $ pwd 
  • $DIR=’pwd’ 
  • $echo $DIR

    Untuk mengisi variabel dengan subtitusi hasil eksekusi dari sebuah eksekusi instruksi harus menggunakan sepasang back quate ('). Misalnya pada contoh diatas variabel DIR didistribusikan dengan hasil eksekusi dari peirntah pwd. Maka saat variabel DIR dipanggil akan tampil hasil dari pwd tersebut.

8. Buatlah shell script prog03.sh kemudian eksekusi! 
  • $ vi prog03.sh 
  • #!/bin/sh 
  • # prog03.sh 
  • NAMA=’whoami’ 
  • echo Nama pengguna Aktif adalah $NAMA 
  • tanggal=’date | cut –c1-10’ 
  • echo hari ini anggal $tanggal
    

    Membuat file program prog03.sh

9. Eksekusi prog03.sh 
  • $ . prog03.sh

    Menampilkan program prog.03.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”

    Membuat file program prog04.sh

2. Eksekusi prog04.sh tanpa parameter, dengan 2 parameter dan dengan 4 parameter!
  • $ . prog04.sh 
  • $ . prog04.sh Amir hasan 
  • $ . prog04.sh Amir hasan badu ali

    Prog04.sh akan di eksekusi tanpa diikuti dengan parameter maka akan menampilkan nama program dengan $0 adalah bash sedangkan parameter 1 2 dan 3 tidak akan berisi parameter. Eksekusi prog04.sh kedua dan ketiga diikuti dengan beberapa parameter. Pertama hanya ada dua parameter yaitu pebri dan ramdani maka parameter yang akan diisi hanya parameter 1 dan 2. Sedangkan selanjutnya diiktui dengan 4 buah parameter. Sehingga nama tanid tidak akan dimasukan kedalam parameter secara merurutan.

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”

    Me-rewrite dengan menambahka =n echo dengan parameter $#

4. Eksekusi prog04.sh tanpa parameter dan dengan 4 parameter 
  • $ . prog04.sh 
  • $ . prog04.sh Amir hasan badu

    Eksekusi pertama prog04.sh tidak diisi dengan parameter maka $# akan menampilkan 0, sedangkan eksekusi porg04.sh diikuti dengan amir hasan badu yang dihitung sebgai 4 parameter, dan tampil dengan jumlah parameternya ditampilkan.

5. Membuat shell script prog04.sh versi 3 dengan menambahkan total parameter dan nomor proses id$ 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” 
  • echo “Total parameter adalah $*” 
  • echo “PID proses shell ini adalah $$”
 

    Me-rewrite dengan menambahkan beberapa echo.

6. Eksekusi prog04.sh dengan 4 parameter 
  • $ . prog04.sh amir hasan badu ali

    Menampilkan prog04.sh dengan nomor PID 2579 yang memiliki 4 parameter.

Percobaan 5 : Status Exit 

1. String tidak ditemukan, maka status exit adalah 1 

  • $ grep xyz / etc/ passwd 
  • $ echo $? 

    Apabila string yang tidak ditemukan pada instruksi grep seperti diatas, akan ditampilkan status exit dengan perintah echo $? adalah 1, artinya tidak ditemukan

2. String ditemukan, maka status exit adalah 0 
  • $ grep <user> /etc/passwd 
  • $ echo $?

    Apabila string yang ditemukan pada instruksi grep seperti diatas, akan ditampilkan status exit dengan perintah echo $? adalah 0, artinya tidak ditemukan.

Percobaan 6 : Konstruksi if 

1. Instruksi dengan exit status 0 

  • $ who 
  • $ who | grep <user>
  • $ echo $?

    Masih merupakan bahasan status exit dari string pebri.ramdani dari instruksi who, maka status exitnya adalah 0 dan tampil dengan menampilkan hasil yang berkaitan dengan perintah who

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

    Perintah if ini adalah untuk membandingkan status exit dengan 0, bila sama, maka program masuk ke dalam blok then if yaitu Pemakai tersebut sedang aktif, karena perintah sebelumnya user sedang aktif hasilnya 0, apabila dengan if $? = 1 artinya user tidak aktif. 

3. Nomor (1) dan (2) diatas dapat disederhanakan dengan 
  • $ if who | grep >/dev/nu11 
  • > then 
  • > echo okay 
  • > fi

    Bentuk sederhana dari 6.1 dan 6.2
 
Percobaan 7 : Konstruksi if then else 

1. Membuat shell script prog05.sh 

  • $ vi prog05.sh
  • #! /bin/sh 
  • # prog05.sh 
  • # Program akan memberikan konfirmasi 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
    
    Memubuat file prog05.sh dengan menggunakan if then else.

2. Jalankan prog05.sh, masukan nama pemakai aktif yang tampil pada instruksi who dan coba juga untuk nama pemakai yang tidak aktif 
  • $ who 
  • $ . prog05.sh [nama=<user>] 
  • $ . prog05.sh [nma=studentOS]

    Perintah who ini menampilkan user aktif yaitu mutiakhair123 dan user yang tidak aktif yaitu student. Jika prog05.sh diisi dengan pebri.ramdani, maka akan ditampilkan sebagai variabel nama yaitu mutiakhair123 sedang aktif. Sedangkan jika prog05.sh diisi dengan nama pemakai student maka instruksi ini dinyatakan tidak aktif karena user yang aktif adalah mutiakhair123.

Percobaan 8 : Konstruksi for-do-done


ANALISA P.8 :


1.  Variabel NAMA diisi dengan pebri. Kemudian untuk memanggil variabel NAMA dengan perintah test dengan $NAMA yang diinputkan adalah "Meu" maka status exit bernilai 0. Sedangkan apabila berisi boris status exit berisi 1 artinya nama boris belum diinputkan, maka apabila dipanggil nama boris tidak ditemukan.


2. Mengisikan program dalam editor vi berdasarkan soal praktikum.

3. Memanggil program yang telah dibuat dengan bantuan . prog06.sh. Apabila nama yang dimasukkan sesuai dengan notasi if maka akan diprint "Selamat datang Meu" apabila bukan, maka akan memprint program else yaitu "Maaf, anda bukan meu"


4. Perintah test diganti dengan perintah [ ], dan akan di eksekusi pada percobaan berikutnya


5. Akan menampilkan hal yang sama dengan nomor 3.

Percobaan 9 : Notasi && dan ||


ANALISA P.9 :


1. && menandakan nitasi true. Pada case ini prog01.sh ada dalam sistem


2. && menandakan nitasi true. Pada case ini prog99.sh tidak ada dalam sistem, sehingga saat intruksi dijalankan tidak keluar output apapun.


3. Pada perintah ini adalah untuk menjalankan shell script dari prog01.sh. sama halnya dengan fungsi instrusi dari . prog01.sh.


4. Bila prog01.sh ada maka jalankan program berikutnya. File prog01.sh memang ada, karena itu exit status adalah TRUE, dank karena sudah TRUE maka instruksi echo tidak lagi dijalankan


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


6. File prog99.sh tidak ada, maka tampilkan pesan error seperti perintah di atas.

Percobaan 10 :  Operator bilangan bulat untuk test


ANALISA P.10 :


1. Variabel i –eq (sama dengan) 5 dan apabila dijalankan instruksi echo $? status exit bernilai 0 karena i memang berisi dengan nilai 5.

2. Sama seperti sebelumnya namun pada i=5 diganti menjadi  notasi [ ] maka status exit tetap akan bernilai 0.  

Percobaan 11 : Operator logic dan kontruksi elif


ANALISA P.11 :

1. Mencatat program dengan editor vi dengan nama prog07.sh


 2. Menjalankan program . prog07.sh dengan mengisi nilai income nya. Sehingga,  diganti dengan notasi [ ] maka status exit tetap akan bernilai 0.

Percobaan 12 : Hitungan Aritmatika


ANALISA P.12 :

1. Melakukan operasi hitung aritmatika perjumlahan, pengurangan, perkalian, pembagian, dan modulo.

2. Variabel A diisi dengan 5 kemudian variabel 5 berisi subtitusi dari perintah expr $A + 1 maka apabila variabel B dipanggil akan berisi hasil dari aritmatika tersebut.

Percobaan 13 : Intruksi keluar


ANALISA P.13 :


1. Membuat program dengan editor vi dengan nama prog08.sh


2. Dengan menggunakan status exit, prog08.sh akan keluar dari terminal dan ketika dilakukan echo$? akan ditampilkan status akhir yaitu 0.

Percobaan 14 : Intruksi case-esac


ANALISA P.14 :


1. Membuat program dengan menggunakan editor vi dengan nama prog09.sh.


2. Dengan variabel PILIH, nantinya kita dapat memilih sesuai input case yang sudah kita masukkan kedalam program. untuk menutup tiap casenya digunakan tanda titik-koma (;).  Apabila memilih nomor 1 maka akan ditampilkan siapa user yang sedang aktif, sedangkan apabila memilih nomor 2 akan ditampilkan tanggal hari ini, apabila memilih nomer 3 akan tampil kalender bulan inid an apabila memilih selai nomor 1 2 atau 3 maka akan ditampilkan echo Salah pilih !!. Kemudian ditutup dengan esac.


3. Membuat program menggunakan editor vi dengan nama prog10.sh


4. Menjalankan prog10.sh. Program tersebut menggunakan instruksi case yang dapat menjawab Ya dan Tidak.


5. Dengan melakukan modifikasi pada jawaban Ya dan Tidak dengan penggunaan huruf kapital dan huruf kecil, kita dapat menjawab dengan jenis huruf yang berbeda.


6. Eksekusi dari program shell script prog10.sh untuk modifikasi nya dan tampil seperti gambar di atas apabila input nya tidak sama dengan yang diprogram.

Percobaan 15 : Konstruksi for-do-done

ANALISA P.15 :

1. Membuat program menggunakan editor vi dengan nama prog11.sh

2. Menjalankan program dengan .prog11.sh.  Apabila prog11.sh ini dijalankan perintah echo akan ditampilkan untuk setiap NAMA karena menggunakan pengulangan for dan tampil seperti tampilan di atas

3. Membuat program menggunakan editor vi dengan nama prog12.sh.

4. Menjalankan program dengan . prog12.sh. akan menampilkan file yang ada pada current directory menggunakan kontruksi for-do-done.

5. Modifikasi prog12.sh ini akan menampilkan long list dari file yang mempunyai ekstensi file .lst.


6. Eksekusi pada percobaan berikutnya namun tidak dapat dilakukan karena tidak ada program berekstensi .lst.

Percobaan 16 : Konstruksi While-do-Done


ANALISA P.16 :


1.  Membuat program menggukana editor vi dengan nama prog13.sh.


2. Ketika prog13.sh ini dijalankan apabila memilih nomor 1 2 atau 3 maka akan diulangi atau ditampilkan lagi pilihan tersebut karena perintahnya tidak berisi. Sedangkan apabila memilih nomor 4 maka pengulangan akan berhenti kemudian tampil tulisan dan tampil seperti gambar.

Percobaan 17 : Intruksi Dummy


ANALISA  P.17 :


1. Modifikasi program menggukana editor vi dengan nama prog13.sh.


2.  Modifikasi ini terlihat pada penulisan while : sebelumnya ditambahkan dengan notasi [ $PILIH –ne 4] sedangkan pada prog14.sh sekarang tidak ada.  Hasil dari eksekusi modifikasi prog13.sh ini akan sama dengan perintah sebelumnya yaitu pada percobaan 16.


3. Membuat program menggukana editor vi dengan nama prog14.sh.


4. Program ditampilkan dengan intruksi . prog14.sh. Variabel A dinyatakan dengan nilai –ne 100. Then echo OK. Apabila dijalankan jika nilai yang dimasukan masih kurang dari 100 maka ditampilkan OK !, sedangkan apabila nilai lebih dari 100 maka tidak akan ada pesan OK ! dan tampil seperti gambar.

Percobaan 18 : Fungsi


ANALISA P.18 :

1. Membuat program menggukana editor vi dengan nama fungsi.sh.

2.  File fungsi.sh pada shell script ini berisi perintah fungsi untuk return 1 dan status exit setelah menjalankan fungsi.sh. hal ini dikarenakan  File fungsi.sh ini apabila dijalankan akan berstatus exit 1 karena bernilai false dan tampil seperti gambar.

3. Memodifikasi program menggukana editor vi dengan nama fungsi.sh.


4. Program ini ditambahkan variabel Honor dengan 10000 dan echo Nilai balik adalah $?. Sehingga hasil nya adalah seperti digambar.

LATIHAN :

1. Buatlah program salin.sh yang menyalin file (copy) sebagai berikut : 

Salin.sh file –asal file-tujuan 

Dengan ketentuan : 

  • Bila file asal tidak ada, berikan pesan, salin gagal. 
  • Bila file tujuan ada tersebut directory, beri pesan bahwa file tidak bisa disalin ke direktori
  • Bila file tujuan ada dan file biasa, beri pesan apakah file tersebut akan dihapus, bila dijawab dengan “Y”, maka copy file tersebut 
  • 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

    Program ini digunakan untuk menyalin direktori atau program ke tujuannya. Apabila tidak ditemukan file nya maka akan keluar dari terminal.

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

    Program ini digunakan untu mencari sebuah direktori, apabila direktori yang dicari ada maka akan menampilkan "mydir ada". Apabila tidak ada, maka akan keluar dari terminal.

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

    Program ini memuat beberapa operasi aritmatika untuk 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%. 

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!

    Program myprog.sh 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. Program ini akan dilanjutkan ke testp.sh.. 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
  1. Pemberian variabel pada pemograman di linux dapat dilakukan dengan catatan memperhatikan karakteryang diketik karena linux bersifat case sensitif
  2. Kita dapat melakukan looping seperti while, if-elif-else, for, dan melihat parameter pada linux dengan menggunakan $# untuk jumlah parameter, menampilkan semua parameter menggunakan $*, dan nomor PID menggunakan $$.
  3. dapat membaca inputan dari keyboar dengan bantuan read
  4. Linux dapat mengoperasikan bilangan aritmatika

Comments

Popular posts from this blog

PRAKTIKUM 5 : BEKERJA DENGAN BASH SHELL

Praktikum 3 : Operasi File dan Struktur Direktori

PRAKTIKUM 11 : MANAJEMEN USER DAN GROUP