Praktikum 6 Pemograman Shell

 POKOK BAHASAN:

  • Pemograman Shell

TUJUAN BELAJAR:

Setelaah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
  • Mempelajari elemen dasar shell script.
  • Membuat program shell interaktif.
  • Menggunakan paramater 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 megetahui cara memanggil fungsi tersebut.
DASAR TEORI:

SHELL SCRIPT
    
    Shell script dibuat menggunakan editor teks (ASCII editor) dan biasanya menggunakan ekstensi ".sh". Script selalu diawali dengan komentar dan dimulai dengan tanda # diikuti dengan ! nama shell yang digunakan. Format penulisannya seperti :

    #!/bin/sh // komentar akan dibaca oleh system dan mengaktifkan program shell(/bin/sh) yang akan diaktifkan oleh sistem.
    # Program shell// sebuah komentar, baris ini akan diabaikan oleh program Shell.
    #
    var1=x // penggunaan variable tidak boleh ada spasi antar nama variable dan konstanta.
    var2=8// penggunaan variable tidak boleh ada spasi antar nama variable dan konstanta.

VARIABEL

    Variabel shell adalah variable yang dapat mempunya nilai berupa String. Format penulisan variabel :

nama_var = nilai_var

    Variable harus dimulai dengan alfabet, disusul dengan alfanumerik dan karakter lain. Variable dapat ditulis dengan ukuran besar,kecil,dan campuran. Shell dapat membedakan ukuran hurus(case sensitive). Contoh :

                                                                                    VPT=poltek
                                   i=5
    Pemberian nilai variabel tidak boleh dipisahkan oleh spasi, karena shell akan menganggap pemisahan tersebut sebagai parameter. Contoh:

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

    Untuk melihat isi dari sebuah variable, gunakan tanda $ di depan nama variable tersebut. Pada shell, instruksi echo menampilkan isi dari variabel. Contoh :

                                                                    VPT=poltek
                                                                     echo $VPT

                                                                    Gaji=450000
                                                                    echo $Gaji
                                                                    echo $VPT $Gaji

    Bila menggunakan string yang terdiri dari lebih satu kata, maka string tersebut harus berada dalam tanda kutip. Contoh:

                                                                      VPT=poltek
                                                                     VPT2="poltek negeri jakarta"

MEMBACA KEYBOARD

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

PARAMETER

    Sebuah program shell mempunyai paramter sebanyak 9 buah yang dipresentasikan melalui variable khusus yaitu variable $!,$2-$9. Variabel $0 digunakan untuk nama program shell(nama script).

    Jumlah paramter dinyatakan dengan $#, jika tidak ada 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 menaik, setiap kali proses berjalan.

STATUS EXIT

    Setiap program setelah selesai dieksekusi akan memberikan informasi melalui variabel spesial $?. Indikasi yang diberikan adalah :
  • Bila program berakhir dengan sukse,$?=0
  • Bila program berakhir dengan error, $? tidak sama dengan 0.
    Nilai dari status exit dapat dilihat melalui instruksi echo $?.

KONSTRUKSI IF

    
    If akan mengesekusi 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 kunci kata fi.

KONSTRUKSI IF THEN ELSE

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

INSTRUKSI TEST

    Instruksi test digunakan untuk memeriksa kondisi dari sebuah ekspresi. Ekspresi terdiri dari faktor dan operator yang dipisahkan oleh spasi. Hasil test akan memberikan nilai berupa status exit, yaitu 0 bila ekspresi sesuai, bila tidak maka hasil tidak sama dengan 0.
  • Operator untuk test
  • Test untuk files dan directory
          Test dapat dilakukan untuk memeriksa apakah file ada(Exist), dapat dibaca,dapat ditulis, kosong dan lainnya.



            Untuk memudahkan pembacaan, test dapat ditulis dengan [ ekspresi ]. Perbedaannya adalah pada akhir ekspresi harus dipisahkan oleh spasi.

LOGICAL && DAN || (SHELL LEVEL)

    Notasi && dan || digunakan untuk menggabungkan isntruksi shell sebagai alternatif untuk if then else. Notasi && dan || sering ditemukan pada shell script sistem administrator untuk menjalankan rotine dari sistem operasi.
  • instruksi && isntruksi2
         Shell akan mengesekusi instruksi1, dan bila exit status instruksi 1 adalah FALSE maka hasil dari AND tersebut sudah pasti sama dengan FALSE, sehingga instruksi 2 tidak mempunyai pengaruh lagi. Oleh karnea itu, instruksi 2 tidak dijalankan. Sebaliknya, bila hasil isntruksi 1 adalah TRUE(0), maka instruksi2 dijalankan. 
  • instruksi1 || instruksi2
          Shell akan mengesekusi 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.

OPERATOR BILANGAN BULAT UNTUK TEST 

    Untuk membandingkan 2 buah bilangan, test memerlukan operator yang berbeda dengan string.

OPERATOR LOGICAL (TEST LEVEL)

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

NOT : symbol!

AND : symbol-a

OR : symbol-o


KONSTRUKSI IF THEN ELSE IF


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

HITUNGAN ARITMATIKA 

    Tipe dari variable SHELL hanya satu yaitu string. Tidak ada tipe lain seperti Numerik, floatin, boolean atau lainnya. Akhirnya variable ini tidak dapat membuat perhitungan aritmatika misalnya :

            A=5
           B=$A + 1         ## error
    
    UNIX menyediakan utilitas yang bernama expr yaiu suatu utilitas yang melakukan aritmatika sederhana.

INSTRUKSI EXIT

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

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 diakhiri dengan esac dan pada setiap kelompok instruksi diakhiri dengan ;;. Pada akhir pilihan yaitu *) yang berarti adalah "default", bila kondisi tidak memenuhi pada sebelumnya.

KONSTRUKSI FOR

    For digunakan untuk pengulangan dengan menggunakan var yang pada setiap pengulangan akan diganti dengan nilai yang berada pada daftar(list).


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 FALSE atau program keluar dari blok while melalui exit atau break.


INSTRUKSI DUMMY

        Instruksi dummy adalah instruksi yang tidak melakukan apa - apa, namun instruksi ini memeberitahukan status exit 0 (TRUE). Oleh karena itu, instruksi dummy dapat digunakan sebagai kondisi forever pada loop (misalnya while). Simbol instruksi dummy adalah 

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 yag dinyatakan dalan { ... }.
Contoh :

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

TUGAS PENDAHULUAN

    Membuat program Shell untuk latihan 1 sampai dengan 5.


HASIL PERCOBAAN

PERCOBAAN 1 : Membuat shell script

1. Buatlah file prog01.sh dengan editor vi


    Untuk membuat file tersebut jalankan perintah $ vi prog01.sh. Kemudian untuk menuliskan script yang ingin dibuat dapat menekan tombol i dan setelah selesai menuliskan script kita dapat menakan tombol esc dan mengetik :wq untuk menyimpan dan keluar dari file tersebut. Var1 emrupan definisi sama dengan x dan var2 didefinisikan sama dengan 8.

2. Untuk menjalankan shell, gunakan notasi titik di depan nama program


    Notasi titik pada nama program digunakan untuk menjalankan shell. Namun, ketika perintah $ . prog01.sh tersebut dijalankan tidak menampilkan output apapun karena tidak ada perintah $ echo yang digunakan untuk menampilkan teks atau string.

3. Untuk menajalankan shell, dapat juga dengan membuat executable file dan dieksekusi relative dari current direktori.


    Perintah $ chmod +x digunakan untuk membuat file prog01.sh menjadi executable. Setelah menjadi file yang bisa dieksekusi tidak ada output yang ditampilkan karena file prog01.sh hanya berisikan script yang mendefinisikan var1 dan var2 saja tanpa ada proses menampilkan.

PERCOBAAN 2 : VARIABEL

1. Contoh menggunakan variabel pada shell interaktif.


    Pada gambar diatas merupakan contoh dari variabel pada shell interaktif. Variabel VPT berisikan kata poltek sehingga ketika memanggil variabel VPT tersebut menggunakan perintah echo $VPT maka akan ditampilkan output berupa tulisan poltek.

2. Pemisahan 2 kata dengan spasi menandakan eksekusi 2 buah instruksi

    
    Untuk pembuatan variabel yang berisikan 2 kata dengan menggunakan spasi jika tidak menggunakan tanda kutip dua ("") maka akan terdapat error. Kemudian perintah echo menggunakan $VPT2 maka akan menampilkan output dari variabel tersebut, jika variabel VPT2 hanya dijalankan dengan perintah echo tanpa tanda $ maka perintah echo akan mengambil variabel tersebut sebagai string.

3. Menggabungkan dua variabel atau lebih.


    Menggabungkan dua variabel atau lebih dapat dituliskan secara langsung dengan pembuatan variabel baru. Contohnya seperti V4 berisikan variabel 1 -3, maka untuk menampilkan outputnya dapat memanggil variabel V4 saja dengan mengunakan perintah $ echo $V4.

4. Menggabungkan isi variabel dengan string yang lain.


    Perintah yang digunakan untuk menampilkan isi variabel dengan string lain yaitu adanya penambahan tanda ({}) yang digunakan pada variabel baru kemudian diikuti dengan string lain.

5. Variabel dapat berisi instruksi, yang kemudian bila dijadikan input untuk shell, instruksi tersebut akan dieksekusi.


    Tampilan diatas merupakan hasil dari variabel yang berisikan perintah atau instruksi yang nantinya akan dieksekusi. Contoh diatas variabel CMD berisikan instruksi who yang aoabila variabel cmd tersebut dipanggil maka instruksi who tersebut akan dieksekusi. Begittupun juga pada variabel CMD yang berisikan perintah las -l yang dimana jika variabel tersebut dieksekusi maka akan menampilkan output seluruh isi file yang ada pada direktori.

6. Modifikasi file prog01.sh


    Pada percobaan ini memodifikasi script yang ada yaitu dengan pembuatan 3 buah variabel dan juga untuk menampilkan isi dari variabel tersebut ditambahkan perintah $ echo.

7. Mengeksekusi shell.

    
    Tampilan diatas merupakan hasil dari perintah yang sudah dilakukan. Pada tampilan tersebut tidak terdapat pesan error dikarenakan file prog01.sh sudah saya jadikan execeutable file ketika melakukan percobaan 1. Kemudian terdapat dua variable yang sama yaitu V3, variabel ini akan ditampilkan outputnya masing - masing seusuai dengan urutan echo yang telah dibuat.

PERCOBAAN 3 : Membaca Keyboard

1. Menggunakan instruksi read. 


    Perintah read dapat digunakan untuk membaca input dari keyboard. Program diatas variabel nama yang akan diinput melalui keyboard yaitu ranwitry. Kemudian, ketika variabel tersebut dipanggil menggunakan perintah $ echo $nama maka ranwitry akan tampil sebagai output.

2. Membaca nama dan alamat dari keyboard.


    Penulisan script untuk file prog02.sh yang dimana merupakan percobaan untuk membaca variabel dari keyboard. Pada script tersebut terdapat tiga variabel yaitu nama, alamat, dan kota yang menruakan input dari keyboard menggunakan perintah read.

3. Eksekusi program prog02.sh 


    Untuk mengeksekusi program tersebut menggunakan perintah notasi $ . prog02.sh. Ketika dieksekusi maka akan ada perintah untuk memasukkan input dari variabel setelah menekan enter. Pada baris terakhir akan ditampilkan Hasil adalah : dengan variabel $nama, $alamat, dan $kota.

4. Instruksi echo secara otomatis memberikan garis baru.


    Pada prog02.sh ditambahkan perintah -n pada echo yang berfungsi untuk menghilangkan garis baru pada saat melakukan input oleh keyboard dari masing masing variabel.

5. Eksekusi program prog02.sh.


    Ketika program tersebut dieksekusi terlihat perbedaan bahwa untuk input keyboard tidak dilakukan pada baris baru namun dilakukan pada baris yang sama.

6. Variabel kosong adalah variabel yang tidak mempunya nilai.

    
    Variabel kosong merupakan variabel yang tidak mempunyai nilai. Variabel ini didapat atas assignment atau membaca keyboard atau variabel yang belum didefinisikan. sehingga ketika variabel dipanggil tidak akan menampilkan apapun.

7. Variabel dapat disubtitusikan dengan hasil eksekusi dari sebuah instruksi.


    Tampilan ditas menrupakan perintah untuk membaca input dari keyboard. Tanda back quate('') harus digunakan untuk mengisi variabel dengan subtisusi hasil eksekusi dari sebuah eksekusi intruksi. Pada contoh diatas variabel DIR didistribusikan dengan hasik ekesekusi perintah pwd, maka ketika variabel DIR tersebut dipanggil akan menampilkan hasil dari pwd.

8. Buatlah shell script prog03.sh


    Pada script tersebut dibuat untuk menampilkan variabel dari hasil eksekusi perintah whoami dan date.

9. Eksekusi prog03.sh 


    Setelah melakukan eksekusi pada file prog03.sh maka akan ditampilkan nama pengguna aktif yang berisi variabel NAMA  yaitu hasil eksekusi dari perintah whoami dan hari ini tanggal akan diikuti dengan variabel tanggal dari hasil instruksi date.

PERCOBAAN 4 : Parameter

1. Membuat shell script prog04.sh


    Pada script tersebut berisikan pembuatan paramter dengan 4 buah pamater $0 - 3 yang nantinya akan dieksekusi.

2. Eksekusi prog04.sh tanpa paramter, dengan 2 parameter, dan dengan 4 parameter.

    
    Ketika program tersebut dijalankan sesuai dengan input parameter yang digunakan maka akan ditampilkan paramter sesuai dengan jumlah paramater yang dimasukkan. Ketika memasukkan 4 buah paramater, hasil parametr yang keempat tidak ditampilkan karena jumlah parameter yang dibuat hanya berlaku dari 0 - 3.

3. Membuat shell script prog04.sh versi 2 dengan memberikan jumlah parameter.


    Modifikasi pada script tersebut yaitu paramater yang didefinisikan dengan simbol $# akan dieksekusi nantinya.

4. Eksekusi prog04.sh tanpa parameter dan dengan parameter.


    Ketika program tersebut dieksekusi maka akan ditampilkan output jumlah parameter yang dimasukkan hal ini disebabkan karena variabel $# sudah didefinisikan.

5. Membuat shell script prog04.sh versi 3.


    Script tersebut dimodifikasi dengan adanya nomor proses id yang didefisika dengan $$ dan untuk menampilkan jumlah paramater yang ada menggunakan $*.

6. Eksekusi prog04.sh dengan 4 parameter.


    Total parameter merupakan hasil untuk tampilan parameter yang dimasukkan yaitu rania dwitry anggraini bm menggunakan instruksi $* dan untuk PID 2367 merupakan hasil dari instruksi $$.

PERCOBAAN 5 : Status exit

1. String tidak ditemukan, maka status exit adalah 1.


    Ketika menjalan perintah echo $? dihasilkan output exit status berupa angka 1. Hal ini berarti string tidak ditemukan pada perintah grep yang dieksekusi tersebut.

2. String ditemukan, maka status exit adalah 0. 


    Hasil dari echo $?  yaitu exit status berupa angka 0 menandakan bahwa string ranwitry ditemukan pada direktori /etc/passwd.

PERCOBAAN 6 : Konstruksi If.

1. Instruksi dengan exit status 0


    Tampilan diatas merupakan hasil yang berkaitan dengan perintah who. Perintah echo $? menampilkan angka 0 yang sama seperti sebelumnya bahwa adanya string pada ranwitry dari perintah $who yang dieksekusi.

2. If membandingkan exit status dengan 0, bila sama, maka blok program masuk ke dalam blok then-if.


    Perintah if digunakan untuk membandingkan status exit dengan 0, bila sama maka program masuk ke dalam blok then-if  yaitu Pemakai tersebut sedang aktif.

3. Nomor 1 dan 2 dapat disederhanakan dengan.


    Dengan menggunakan perintah $ if who dengan grep user maka akan dibelokkan ke /dev/null apabila perintah berstatus exit 0 maka akan ditampilkan okay.

PERCOBAAN 7 : Konstruksi if then else

1. Membuat shell script prog05.sh


    Script tersebut dibuat sebagai program untuk memberi info mengenai user yang sedang aktif atau tidak. Kemudian untuk variabel $nama akan dibelokkan pada /dev/null. Untuk then apabila aktif atau else jika nama tidak aktif dan ditutup dengan fi dan selanjtnya akan dieksekusi.

2. Jalankan prog05.sh


    Gambar diatas merupakan perintah untuk menampilkan konstruksi if then else. Perintah $ who akan menampilkan user yang aktif. Kemudian, ketika dimasukkan nama user untuk variabel yaitu ranwitry maka akan ditampilkan bahwa user sedang aktif dan ketika diisi dengan user studentOS maka akan dinyatakan tidak aktif karena user yang aktif adalah ranwitry.

PERCOBAAN 8 : Instruksi Test

1. Menggunakan instruksi test, perhatikan sepasi antara.


    Tampilan diatas merupakan variabel NAMA yang diisikan dengan rania. Perintah $ test dapat digunakan untuk memanggil variabel NAMA tersebut dengan $NAMA maka akan didefinisikan rania yang dimana exit statusnya bernilai 0. Sedangkan jika variabel NAMA diisikan boris maka status exit akan menjadi 1 hal ini dikarenakan boris belum diinputkan, sehingga apabila dipanggil maka nama boris tersebut tidak ditemukan.

2. Aplikasi test dengan konstruksi if 


    Pada script tersebut variabel  nama sudah didefinisikan sebagai rania. Adanya perintah if apabila variabel tersebut berisi rania maka akan ditampilkan output "Selama Datang rania" dan else akan menampilkan "Anda bukan rania, sorry!" jika isi variabel tersebut bukan rania dan fi digunakan untuk mengakhiri program.

PERCOBAAN 9 : Notasi && dan ||

1. Bila file prog01.sh ada (TRUE),maka jalankan program berikutnya.


    Tampilan diatas nerupakan keadaan ketika prog01.sh maka, exit statusnya adalah TRUE, hasil operasi AND masih tergantung pada hasil eksekusi instruksi ke 2 sehingga perintah $ echo tersebut dijalankan dan file tersebut berada pada direktori yang membuat perintah dapat dieksekusi.

2. File prog99.sh tidak ada, karena itu exit status adalah FALSE dan instruksi echo tidak dijalankan. 


    File prog99.sh tidak ada sehingga status exit menjadi FALSE yang membuat perintah $echo tidak akan diproses.

3. Bila prog01.sh ada maka jalankan shell script tersebut.

    
    Perintah tersebut akan menjalankan shell script yang ada pada file prog01.sh output yang ditampilkan sama seperti menjalankan perintah $ . prog01.sh.

4. Bila prog01.sh ada maka jalankan program berikutnya.


    File prog01.sh tersebut sudah ada sehingga exit statusnya adalah TRUE. Sehinggga perintah $ echo tidak lagi dijalankan.

5. File prog99.sh tidak ada, karena itu exit status adalah FALSE, hasil tergantung atas exit status instruksi kedua, karena itu instruksi echo dijalankan.

    
    Ketika perintah tersebut dijalankan terlihat bahwa file prog99.sh tidak ada maka status exitnya bersifat FALSE, maka perintah $ echo akan dijalankan karena tergantung akan status exit dari instruksi kedua.

6. File prog99.sh tidak ada, maka tampilkan pesan error.


    Karena file tersebut tidak ada maka sama seperti sebelumnya status exitnya menjadi FALSE dan hasil tergantung atas exit status dari instruksi kedua, sehingga perintah $ echo dapat dijalankan.

PERCOBAAN 10 : Operator bialngan bulat untuk test

1. Menggunakan operator dengan notasi test.


    Variabel i berisikan 5 dengan notasi test, variabel i  eq sama dengan 5 dan apabila perintah $ echo $? dijalankan maka status exit tersebut akan bernilai 0 karena variabel i berisikan nilai 5.

2. Menggunakan operator dengan notasi [] (pengganti notasi test).

    
    Sama seperti sebelumnya disini yang membedakan hanya notasi test digantikan dengan notasi [] maka status exit yang ditampilkan tetep bernilai 0.

PERCOBAAN 11 : Operator logical dan konstruksi elif

1. Buatlah file prog07.sh


     Perintah $ vi prog07.sh berfungsi untuk membuat file menggunakan editor vi. Pada script tersebut berisikan perintah if dengan variabel INCOME. Terdapat tiga perintah yaitu BIAYA = 10, BIAYA = 25, BIAYA = 35 yang nantinya akan dieksekusi.

2. Jalankan file prog07.sh dan masukkan untuk INCOME=5000,20000,28000.


    Ketika kita menjalankan program tersebut dan mengisi variabel INCOME dari 0 - 10000 maka biaya yang ditampilkan yaitu 10, sedangkan apabila INCOME berisi nilai 10000-25000 maka biaya yang ditampilkan adalah 25  dan jika INCOME lebih dari 25000 maka biaya yang ditampilkan adalah 35 .

PERCOBAAN 12 : Hitungan aritmatika

1. Menggunakan utilitas expr.


    Perintah expr merupakan utilitas yang digunakan untuk perhitungan aritmatika. Simbol - simbol yang digunakan adalah + penjumlahan, - pengurangan, \* perkalian dan pembagian dapat menggunakan / serta % untuk modulus atau sisa hasil bagi.

2. Subtitusi isi variabel dengan hasil utilitas expr.


    Pada gambar diatas variabel A diisi dengan nilai 5 kemudian variabel 5 berisikan subtitusi dari perintah expr $A + 1. Sehingga jika variabel B dipanggil maka akan berisi hasil dari aritmatika tersebut.

PERCOBANN 13 : Instruksi exit

1. Buat shell script prog08.sh


    Script tersebut berisikan instruksi if dan notasi [ ] prog01.sh berisikan instruksi exit yang nantinya akan dieksekusi.

2. Jalankan script prog08.sh dan periksa status exit.


    Ketika file tersebut dijalankan dengan perintah $ . prog08.sh maka akan otomatis keluar dari terminal kemudian jika masuk ke terminal kembali dan menjalankan perintah $ echo $? maka status exit yang ditampilkan yaitu 0.

PERCOBAAN 14 : Konstruksi case - esac

1. Buatlah file prog09.sh dengan editor vi.


    Variabel yang ada yaitu variabel PILIH. Kemudian untuk format penulisan tersebut diawali dengan case kemudian variabel PILIH diikuti dengan in. Kemudian definiskan untuk nomor 1 hingga 3 setiap nomor ditutup dengan simbol ;;. Untuk pemilihan terakhir apabila memilih selain nomor 1 2 3 digunakan perintah *). Kemudian ditutup dengan esac dan akan dieksekusi pada percobaan berikutnya.

2. Jalankan program prog09.sh cobalah beberapa kali dengan inputan yang berbeda.


    Ketika menjalakan program tersebut dan kita memilih pilihan yang ada yaitu 1 -3 , maka output yang dihasilkan dari setiap pilihan tersebut berbeda seperti 1 akan menunjukkan siapa yang sedang aktif, pilihan 2 untuk menunjukkan tanggal yang sedang berlangsung, dan pilihan 3 untuk menampilkan kalender pada bulan ini. Jika memasukan selain dari tiga pilihan tersebut akan output yang ditampilkan yaitu dari perintah $ echo salah pilih!!.

3. Buatlah file prog10.sh yang merupakan bentuk lain dari case.


    Gambar di atas merupakan perintah Konstruksi Case-Esac. Shell script prog10.sh ini merupakan bentuk lain dari perintah case. Variabel JWB dapat dijawab dengan perintah y/Y/ya?Ya/YA untuk y, sedangkan untuk JWB=t dapat ditulis dengan t/T/tidak/Tidak/TIDAK dan nanti akan dieksekusi.

4. Jalankan program prog10.sh cobalah beberapa kali dengan inputan yang berbeda.

    
    Gambar diatas merupakan hasil eksekusi prog10.sh dan pada output tersebut saya mencoba semua nilai pada JWB.

5. Modifikasi file prog10.sh yang merupakan bentuk lain dari case.


      Pada shell script tersebut diubah pada bagian perintah case, seperti y dapat ditulis huruf kecil atau besar, kemudian untuk “ya” bisa y nya bisa huruf besar/kecil begitupula dengan t nya dan akan dieksekusi berikutnya.

6. Jalankan program prog10.sh.

   
    Setelah melakukan modifikasi pada schll script prog10.sh maka outputnya menjadi gambar diatas.

PERCOBAAN 15 : Konstruksi for-do-done

1. Buatlah file prog11.sh 


    Pembuatan script tersebut dilakukan pada editor vi dengan memasukkan erintah $ vi prog11.sh. Shell script ini berisi konstruksi for-do-done dimana for untuk variabel nama bambang harry kadir amir. Kemudian dijalankan dengan perintah do dan ditutup dengan done dan akan dieksekusi.

2. Jalankan program prog11.sh 


    Ketika prog11.sh dijalankan maka perintah $ echo akan menampilkan setiap NAMA karena menggunakan pengulangan for.

3. Buatlah file prog12.sh yang berisi konstruksi for dan wildcard.


    Script tersebut berisikan instruksi for dan wild card. Pada program ini akan menampilkan nama file yang berbeda pada current directory yang nantinya akan dieksekusi.

4. Jalankan program prog12.sh.


    Ketika prog12.sh dieksekusi maka akan menampilkan seluruh nama direktori pada current direktori. Hal ini karena adanya instruksi for-do-done.

5. Modifikasi file prog12.sh


    Gambar di atas merupakan perintah yaitu konstruksi for-do-done. Modifikasi prog12.sh ini akan menampilkan long list dari file yang mempunyai ekstensi file .lst dan akan dieksekusi pada percobaan berikutnya.

6. Jalankan prog12.sh.


    Output yang ditampilkan berupa pesan error dikarena tidak ditemukannya file atau direktori yang berekstendi .lst.

PERCOBAAN 16 : Konstruksi while-do-done

1. Buatlah file prog13.sh 


     Program shell script untuk prog13.sh ini berisi perintah pengulangan serta terdapat 4 pilihan. Variabelnya adalah PILIH –ne 4 dan akan dieksekusi pada percobaan berikutnya.

2. Jalankan program prog12.sh



    Pada program prog13.sh jika dijalankan dan memilih pilihan 1-3 maka akan diulangi tampilan untuk memilih tersebut karena perintahnya tidak berisi. Namun, ketika memilih nomor 4 maka pengulangan akan berhenti dan tampilan menjadi seperti gambar kedua.

PERCOBAAN 17 : Instruksi dummy

1. Modifikasi file prog13.sh 


    Script tersebut dimodifikasi pada bagian while yang  sebelumnya ditambahkan dengan notasi [ $PILIH –ne 4] sedangkan pada prog14.sh sekarang tidak ada dan akan dieksekusi pada percobaan berikutnya.

2. Jalankan prog13.sh 
 

    . Hasil dari eksekusi modifikasi prog13.sh ini akan sama dengan perintah sebelumnya yaitu pada percobaan 17 dan tampil seperti gambar diatas. Program ini merupakan salah satu instruksi dummy yang dimana instruksi tersebut tidak melakukan apa - apa.

3. Buatlah file prog14.sh yang berisi instruksi dummy untuk konstruksi if

    
     Masih pada shell script, pada program prog14.sh ini berisi instruksi dummy untuk konstruksi if. Variabel A dinyatakan dengan nilai –ne 100. Then echo OK dan akan dieksekusi pada percobaan berikutnya.

4. Jalankan program prog14.sh beberapa kali dengan input yang berbeda.


    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 

1. Buatlah file fungsi.sh.

    
    File fungsi.sh pada shell script ini berisi perintah fungsi untuk return 1 dan status exit setalah menjalankan fungsi dan akan dieksekusi pada percobaan berikutnya.

2. Jalankan program fungsi.sh.

    
    File fungsi.sh ini apabila dijalankan akan berstatus exit 1 karena bernilai false.

3. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh.


    Modifikasi file fungsi.sh ini hanya ditambah variabel Honor dengan 10000 dan echo Nilai balik adalah $? yang akan dieksekusi.

4. Jalankan program fungsi.sh.


    Tidak ada perbedaan fungsi dalam file.sh hasil modifikasi ini hanya penambahan nilai dari variabel Honor saja dan tampil seperti gambar.

5. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh.

    
    Percobaan ini juga masih merupakan modifikasi dari file fungsi.sh dengan penambahan local sebelum pendefinisian variabel Honor=10000 dan akan dieksekusi pada percobaan berikutnya.

6. Jalankan program fungsi.sh.


    Gambar di atas merupakan perintah fungsi. Dan untuk hasilnya pun tidak ada perubahan dari modifikasi file fungsi.sh sebelumnya. 

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 dan file tersebut adalah directory, beri pesan bahwa file tidak bisa disalin ke direktori.
  •  Bila file tujuan ada dan file biasa, beri pesan apakan 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 
        #!/bin/sh 
        # file: salin.sh 
       # Usage: salin.sh fasal ftujuan 
        if [ $# -ne 2] 
        then 
    echo “Error, usage: salin.sh file-asal file-tujuan”
    exit -1
    fi 
    fasal=$1 
    ftujuan=$2 
    echo “salin.sh $fasal $ftujuan” 
    …… 
    ……  

 
 



    $1 san $2 merupakan parameter yang akan menjadi file asal dan file tujuan. Kondisi if menunjukkan bila jumlah parameter kurang dari dua maka akan ditampilkan "Salin gagal". Jika kondisi tersebut tidak terpenuhi maka akan berganti baris selanjutngan dengan kondisi elif parameter kedua adalah direktori maka akan dimunculkan pesan "File tidak bisa dicopy!". Untuk keadaan selanjutya dapat membuat pertanyaan untuk konfirmasi apakah file akan dihapus atau tidak. Keadaan else merupakan file parameter satu yaitu text1.txt yang berupa file asal akan dicopy ke parameter file tujuan yaitu text3.txt.

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 logic al && atau || pada level shell.

        #!/bin/sh 
    # file: checkdir.sh 
    # Usage: checkdir.sh DirectoryName 
    # if [ $# -ne 1] 
    then 
        echo “Error, usage: checkdir.sh DirectoryName” 
        exit 1 fi [ … ] && …  


    Ketika dijalankan program checkdir.sh ini tidak menemukan directory yang di cari sehingga secara otomatis akan di “closed” atau exit. Kemudian saya melakukan modifikasi program menjadi seperti dibawah ini.



    Ketika saya mencoba untuk mengesekusi untuk mengecek file ataupun direktori tersebut tidak muncul keadaan apapun yang dimana seharusnya langsung mengsekusi perintah $ ls - ld.

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. 
         $ sh –x pph.sh 
    + echo –n ‘Berikan gaji dalam ribuan rupiah : ‘ 
    Berikan gaji dalam ribuan rupiah : + read gaji 
    20000 
    + pkp=10000 
    + ‘[‘ 20000 –le 10000 ‘]’ 
    ++ expr 20000 – 10000 
    + gaji=10000 
    + pph=1500 
    + pkp=25000 
    + ‘[‘ 10000 –le 25000 ‘]’ 
    + pkp=10000 
    ++ expr 1500 
    + 10000 ‘*’ 25 / 100 
    + pph=4000 
    + echo ‘Pajak Penghasilan = 4000’ 
    Pajak Penghasilan = 4000 



    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!


        Saya melakukan modifikasi pada program diatas.

    
    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.

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 kerangka program berikut untuk memenuhi permintaan tersebut.



    Confirm.sh merupakan sebuah fungsi yang akan dipanggil oleh program lain yaitu testp.sh yang akan diinputkan karakter sesuai dengan kondisi pada case esac. Jika inputan berhubungan dengan kata "Yes" maka nilai balik adalah 0, jika "NO" nilai baliknya menjadi 2.


    Program tersebut adalah testp,sh dimana if akan memberikan sebuah kondisi menaluli parameter $?. Jika $? sama dengan 0, maka akan ditampilkan "Jawaban YES OK", jika 1 ditampilkan "Jawaban NO", jika tidak 0 atau 1 akan ditampilkan "Jawaban CONTINUE". Namun jika program confirm.sh tersebut dijalankan hanya akan menampilkan antara nilai balik 0 dan 1 saja karena hanya kedua nilai tersebut yang ada.

KESIMPULAN 

    Shell script  dibuat menggunakan editor teks (ASCII editor) dan umumnya diberika eksetensi ".sh", Variabel shell dapat mempunyai nilai berupa string dan nilainya dapat diinput melalui keyboarad menggunakan perintah $ read. Setiap program yang telah slesai dieksekusi akan memberikan informasi melalui variabe speasial $?. Dalam pemograman shell ini dapat menggunakan perintah percabangan if,case, dan perulangan while in dan juga dapat membuat fungsi yang nantinya bisa dipanggil oleh file lain. Pada pemograman shell ini juga terdiri dari beberapa jenis operator yang digunakan seperti :
  • Operator untuk test
  • Test untuk file dan direktori
  • Logical && dan ||
  • Operator bilangan bulat
  • Operator logical
DAFTAR PUSTAKA

Fajar Moch. http://pemula.linux.or.id/programming/bash-shell.html . Diakses pada 5 November 2020.

Hendiawan Koko. 2014. http://intheworld-it.blogspot.com/2014/11/laporan-praktikum-sistem-operasi_98.html . Diakses pada 5 November 2020. 








Komentar

Postingan populer dari blog ini

Praktikum 3 Operasi File dan Struktur Direktori

Praktikum 4 Proses dan Manajemen Proses

Praktikum 9 Manajemen Perangkat Keras