Praktikum VI Shell Programming
PRAKTIKUM VI I. Judul Dasar Pemrograman Shell BASH (Fundamental III) II. Tujuan 1. Mengerti mengenai aritmetika dalam Shell BASH 2. Mengerti array dalam lingkungan Shell BASH 3. Memahami pembacaan masukan dari user III. Dasar Teori 3.1 Pembacaan masukan dari user 3.1.1 Variabel (review) Pada praktikum sebelum telah dibahas mengenai deklarasi sebua variabel dan bagaimana memberikan nilai ke dalam variabel tersebut. Seperti telah dijelaskan pula bahwa ada dua kelompok varibel dalam lingkungan Shell BASH yaitu, variabel environment dan variabel lokal. Sebagai gambaran, variabel environment adalah variabel yang merupakan bawaan dari Shell BASH itu sendiri, kelompok variabel ini secara default berisi definisi-definisi environment seperti PATH, USER, LOGNAME dll. Sifat dari varibel environment ini adalah global atau berlaku disemua Shell dan SubShell. Berikut contoh mekanisme untuk membuat sebuah variabel environment baru dan menjadikan variabel tersebut bersifat global. $ nama=”john” atau bisa juga dengan declare nama=”john” $ export NAME=”john” $ echo “$nama” “$NAME”
Keterangan : 1. Baris pertama mendefinisikan sebuah variabel lokal dengan identitas “nama” 2. Mendefinisikan variabel global dengan identitas “NAME” 3. Mengektraksi masing-masing nilai dari variabel nama dan NAME 3.1.2 Read (perintah membaca input dari user) perintah “Read” merupakan perintah yang termasuk dalam kelompok buil-in command shell. Perintah ini berfungsi untuk membaca masukan dari user melalui perantara keyboard. Jika tidak ada opsi maka perintah ini akan membaca masukan yang diberikan oleh user tanpa memilah-milah terlebih dahulu. Batas pembacaan masukan adalah ketika mulai baris baru yang ditandai dengan penekanan tombol ‘enter’ oleh user. Berikut ini adalah format penggunaan perintah read beserta opsi yang dapat digunakan dalam penulisan skrip BASH Shell.
Copyright Ach Subhan KH 2007
Praktikum VI Shell Programming
Tabel 3.1 Format perintah Read Format Deskripsi read jawaban Membaca satu baris masukan dari standard input dan disubstitusikan ke variabel jawaban read awal akhir Membaca satu baris input dan dipisahkan berdasarkan spasi, masukan pertama disubtitusikan ke variabel awal, dan masukan kedua disubtitusikan ke variabel akhir read Membaca satu baris masukan dan disubtitusikan ke variabel built-in yang bernama REPLY. read –a nama_array Membaca daftar kata dari masukan dan mensubtitusikan ke dalam variabel array nama_array. read –e Digunakan di shell intereraktif read –p prompt Menampilkan prompt, menunggun masukan, dan mensubtitusikan masukan ke dalam variabel REPLY read –r line Memperbolehkan adanya karakter backslash pada masukan yang diberikan. Contoh penggunaan perintah read : #!/bin/bash #nama skrip : coba echo read echo echo read echo echo
–e “apakah kamu senang : ” hasil “anda menjawab $hasil” “siapa nama lengkap kamu ?” n_awal n_tengah n_akhir “nama lengkap kamu adalah $n_awal $n_tengah $n_akhir” “nama awal kamu adalah $n_awal”
output program adalah : $./coba apakah kamu senang : ya anda menjawab ya siapa nama lengkap kamu ? rudi hadi suwarno nama lengkap kamu adalah rudi hadi suwarno nama awal kamu adalah rudi
3.2 Array Pada versi BASH 2.x terdapat fungsi untuk mendefinisikan array satu dimensi. Array memungkinkan seorang programmer mengkoleksi daftar beberapa nilai dalam sebuah variabel. Untuk mengektraksi kembali nilai-nilai tersebut dapat dilakukan dengan menyebutkan nama varibel yang diikuti oleh nomer indek array tersebut. Pendefinisian sebuah array juga bisa dilakukan on the fly(tanpa mendefinisikan terlebih dahulu). Dan tidak ada batasan maksimum dari sebuah array yang dibuat dalam lingkungan BASH Shell. Pada saat sebuah nilai diberikan ke dalam sebuah array yang telah didefinisikan, indek array secara otomatis akan dimulai dari 0, dan bertambah naik 1 sampai semua kumpulan nilai-nilai dimasukkan. Copyright Ach Subhan KH 2007
Praktikum VI Shell Programming
Contoh deklarasi array : $ declare –a nomor=(45 50 23) $ nama=(andi hafid intan) $ kota=(surabaya medan jakarta) x[0]=7 x[4]=400
contoh lain : $ declare –a nama $ nama=(luky ani arman) $ echo ${nama[1]} ani $ echo ${nama[2]} arman $ echo “berikut ini nama teman-temanku ${nama[*]}” berikut ini nama teman-temanku luky ani arman $ echo “jumlah total indek array adalah ${#nama[*]}” jumlah total indek adalah 3 $ unset nama
Keterangan : 1. Mendeklrasikan variabel array “nama” 2. Memasukkan nilai ke dalam array “nama” 3. Menampilkan isi dari array indek ke 1 4. Menampilkan isi dari array indek ke 2 5. Menampilkan semua isi array “nama” 6. Menampilkan jumlah indek total dari array “nama” 7. Menghapus array “nama” 3.3 Aritmetika (perintah declare dan let) 3.3.1 Integer Selain untuk mendefinisikan array perintah declare juga digunakan untuk mendefinisikan variabel bertipe integer. Dengan menggunakan opsi –i pada penggunaan declare maka sebuah variabel akan didefinisikan sebagai variabel yang bertipe interger. Selain declare perintah let juga dapat digunakan untuk mendefinisikan sebuah variabel bertipe integer. Namun pada dasarnya let lebih ke arah operasi aritmetika. Hal inilah yang menjadi pembeda antara perintah declare dan let. Contoh deklarasi integer : $ declare –i num $ num=halo $ echo $num 0 $ num=5 + 5 bash: +: command not found $ num=5+5 $ echo $num 10
Copyright Ach Subhan KH 2007
Praktikum VI Shell Programming
$ num=9*8 $ echo $num 72 $ num=”5 + 5” $ echo $num 10 $ num =6.5 bash: num: 6.5 expression is “.5”)
syntax
error
in
expression(remainder
of
contoh perintah let $ i=5 atau let i=5 $ let i=i+1 $ echo $i 6 $ let “i = i + 2” $ echo $i 8 $ let “i+=1” $ echo $i 9 $ i=3 $ ((i=i+4)) $ echo $i 7 $ ((i=i-2)) $ echo $i 5
3.3.2 Format bilangan Dalam lingkungan Bash Shell pendefinisian sebuah varibel numerik juga mengenal format basis bilangan. Seperti biner atau basis 2, desimal atau basis 10, heksadesimal atau basis 16, oktal atau basis 8. Bentuk pendefinisian dari format bilangan dalam Bash Shell adalah : variabel=basis#numerik terdefinisi
bilangan
dalam
basis
contoh : $ n=2#1001
maksudnya adalah basis 2; numeriknya 1001 dalam basis 2
$ echo $n 9 $ declare –i x=017 $ echo $x 15
Copyright Ach Subhan KH 2007
integer yang diawali oleh 0 akan dibaca sebagi bilangan oktal
Praktikum VI Shell Programming
$ x=8#17 $ echo $x 15 $ x=16#b $ echo $x 11
3.3.3 Floating point Floating point atau lebih dikenal dengan bilangan mengambang atau dikenal juga dengan bilangan pecahan. Dalam Bash Shell floating point tidak dapat di definisikan dengan perintah built-in. namun dalam lingkungan Shell untuk proses bilangan pecahan dapat menggunakan utilitas yang ada seperti bc, awk, dan nawk. Utilitas ini sangat berguna karena BASH sendiri tidak support terhadap bilangan pecahan. Contoh : $ n=`echo “scale=3; 13 / 2” | bc` $ echo $n 6.500 $ produk=`awk –v x=2.45 –v y=3.123 ‘BEGIN{printf “%.2f”,x*y}’` $ echo $produk 7.65
IV. Percobaan Petunjuk praktikum 1. Tulis setiap percobaan berikut dalam sebuah file yang diberi nama sesuai dengan percobaannya 2. Gunakan editor VIM 3. Setelah menyimpan dan keluar dari editor VIM gunakan perintah “chmod 755 nama_file” untuk merubah file menjadi mode executable 4. Lakukan untuk setiap percobaan 5. Laporan sementara adalah hasil observasi beserta output program 4.1 Perintah Read Percobaan 411 #!/bin/bash echo “siapa nama kamu ?” read nama echo “$nama, anda login tanggal `date +%D`“ echo “selamat datang $nama”
Percobaan 412 #!/bin/bash echo “siapa nama kamu” read echo “nama kamu adalah $REPLY”
Copyright Ach Subhan KH 2007
Praktikum VI Shell Programming
Percobaan 413 #!/bin/bash echo “sebutkan tiga nama panggilan dari teman-teman mu [xxx rrrr ssss]” read teman1 teman2 teman3 echo “nama temanmu yang pertama adalah $teman1” echo “nama temanmu yang kedua adalah $teman2” echo “nama temanmu yang ketiga adalah $teman3” set $teman1 $teman2 $teman3 echo “jumlah teman kamu adalah $#”
Percobaan 414 #!/bin/bash read –p “masukkan nrp kamu dengan format xxxx xxx xxx : ” echo “nomor nrp kamu adalah $REPLY”
Percobaan 415 #!/bin/bash echo –n “masukkan nrp kamu dengan format xxxx xxx xxx : ” read –a nrp echo “nomor awal nrp kamu adalah ${nrp[0]}” echo “kode diploma ${nrp[1]}”
4.2 Perintah Declare dan Let Percobaan 421 #!/bin/bash declare –i data data=ardi echo “isi variabel data=5 echo “sekarang isi echo “hasil dari 5 data=data*5 echo isi data saat unset data
data adalah $data” data adalah $data” * $data adalah 5*$data” ini $data
Percobaan 422 #!/bin/bash declare –i num data hasil num=”6 * 4 ” echo “hasil 6 * 4 adalah $num” data=5 hasil=data*num echo “hasil $data * $num adalah $hasil” unset num data hasil
Percobaan 423 #!/bin/bash declare –i data1 data2 hasil read –p “Masukkan sebuah angka : ” data1=$REPLY read –p “Masukkan angka lagi : ” data2=$REPLY hasil=data1/data2 echo “hasil dari $data1 / data2 adalah $hasil” unset data1 data2 hasil
Copyright Ach Subhan KH 2007
Praktikum VI Shell Programming
Percobaan 424 #!/bin/bash let i=5 echo “nilai i adalah $i” let i=i+5 echo “nilai i saat ini” let “i = i + 10” echo “nilai menjadi $i” unset i
Percobaan 425 #!/bin/bash let data1 data2 hasil read –p “masukkan sebuah angka : ” data1=$REPLY read –p “masukkan sebuah angka lagi : ” data2=$REPLY ((hasil=data1-data2)) echo “hasil dari $data1 - $data2 adalah $hasil ” unset data1 data2 hasil
Percobaan 426 #!/bin/bash declare –i data data=2#1000111 echo “10001111 sama dengan $data desimal (basis 10)” data=8#15 echo “15 oktal sama dengan $data desimal” data=16#ff echo “ff heksadesimal sama dengan $data desimal” nilai=1111 data=2#$nilai echo “$nilai basis 2 sama dengan $data basis 10”
4.3 Array Percobaan 431 #!/bin/bash declare –a nilai=(jeruk nanas apel semangka) echo “isi dari array indek 0 adalah ${nilai[0]}” echo “isi array ke 1 adalah ${nilai[1]}” echo “jumlah indek adalah ${#nilai[*]}” echo “isi array adalah ${nilai[*]}” unset nilai
Percobaan 432 #!/bin/bash declare –a x=(2 [3]=hai [8]=ali) echo “indek ke 0 berisi ${x[0]}” echo “indek ke 1 berisi ${x[1]}” echo “indek ke 3 berisi ${x[3]}” echo “indek ke 8 berisi ${x[8]}” echo “jumlah total indek adalah ${#x[*]}” unset x
Percobaan 433 #!/bin/bash echo “Masukkan minimal 3 nama buah-buahan : ” read –a buah echo “nama buah-buahannya adalah ${buah[*]}” echo “jumlah buah yang anda masukkan adalah ${#buah[*]}”
Copyright Ach Subhan KH 2007
Praktikum VI Shell Programming
Percobaan 434 #!/bin/bash x[0]=3 x[5]=2 x[2]=4 echo “isi array berturut-turut adalah ${x[*]}” echo “jumlah indeknya adalah ${#x[*]}” unset x
Percobaan 435 #!/bin/bash declare –ai x x[0]=2 x[2]=3 x[3]=${x[0]}*${x[2]} echo “hasil ${x[0]} kali ${x[2]} adalah ${x[3]} echo “jumlah indek array adalah ${#x[*]}” unset hasil
4.4 Floating point Percobaan 441 #!/bin/bash hasil=`awk –v data=3.45 –v data1=5.59 ‘BEGIN{printf “%.3f”, data+data1}’` echo “hasil dari 3.45 + 5.59 adalah $hasil”
Percobaan 442 #!/bin/bash read –p “masukkan sebuah bilang floating point (x.y) : ” data=$REPLY read –p “masukkan lagi bilangan floating point (a.b) : ” data1=$REPLY hasil=`awk –v nilai1=$data –v nilai2=$data1 ‘BEGIN{printf “%.3f” nilai1*nila2}’` echo “hasil kali $data dan $data1 adalah $hasil”
V. Tugas 1. Buat rangkuman mengenai utilitas awk dan penggunaannya, minimal 1 lembar kertas ukuran A4 dan dikumpulkan bersamaan dengan laporan resmi.
Copyright Ach Subhan KH 2007