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.
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 –e “apakah kamu senang : ” read hasil
echo “anda menjawab $hasil” echo “siapa nama lengkap kamu ?” read n_awal n_tengah n_akhir
echo “nama lengkap kamu adalah $n_awal $n_tengah $n_akhir” echo “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.
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
$ num=9*8 $ echo $num 72 $ num=”5 + 5” $ echo $num 10 $ num =6.5
bash: num: 6.5 syntax error in expression(remainder of expression is “.5”)
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 bilangan dalam basis terdefinisi
contoh :
$ n=2#1001 maksudnya adalah basis 2; numeriknya 1001 dalam basis 2
$ echo $n 9
$ declare –i x=017 integer yang diawali oleh 0 akan dibaca
sebagi bilangan oktal
$ echo $x 15
$ 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
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 adalah $data” data=5
echo “sekarang isi data adalah $data” echo “hasil dari 5 * $data adalah 5*$data” data=data*5
echo isi data saat ini $data unset 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
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[*]}”
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.