Praktikum
5
Expresi dan Test
A. T U J U A N 1. Menggunakan statement built-in pada system linux untuk menyelesaikan permasalahan matematika. 2. Menggunakan statement Let dan ekspresi atau perintah subtitusi untuk perkalian, penjumlahan, pengurangan dan pembagian serta hasil bagi. 3. Menggunakan perintah Test untuk memeriksa informasi tentang suatu file dan melakukan perbandingan suatu nilai baik string ataupun numerik.
B. DASAR TEORI Ekspresi Ekspresi pada bahasa-bahasa tingkat tinggi terbagi atas dua macam yaitu ekspresi
kondisi
dan
ekspresi
aritmatika.
Kedua
macam
ekspresi
ini
menggunakan operator.
Operator Kondisi ||
atau (OR)
&&
dan
!
tidak(NOT)
(AND)
Konstanta kondisi ada dua: 0 untuk kondisi salah (FALSE) dan 1 untuk kondisi benar (TRUE). Sedangkan untuk operator relasi yang menghasilkan TRUE atau FALSE sebagai berikut:
40
Operator Relasi ==
sama dengan
!=
tidak sama dengan
=~
sama dengan untuk string
!~
tidak sama dengan untuk string
<=
lebih kecil atau sama dengan
>=
lebih besar atau sama dengan
>
lebih besar
<
lebih kecil
Operator yang berhubungan dengan aritmatika adalah: Perkalian
*
Pembagian
/
Penjumlahan
+
Pengurangan
-
Modulo (sisa hasil bagi)
%
Contoh: ($#argv > 2 || $#argv == 0)
jumlah parameter sama dengan 0 atau lebih dari dua
($1 =~ -*)
parameter pertama dengan – (strip)
($nama !~ *.c)
nama tidak diakhiri dengan .c
dimulai
Untuk operasi matematika ada 3 cara yang dapat digunakan, dengan statement builtin let atau expr atau perintah subtitusi seperti contoh berikut: #memakai let let jumlah=$a+$b #memakai expr bagi=`expr $a / $b` #memakai perintah subtitusi $((ekspresi)) modul =$(($a%$b))
41
fungsi expr begitu berdaya guna baik untuk operasi matematika ataupun string contohnya: $ mystr="linux" $ expr length $mystr 5 Selain itu Bash pada system linux juga menyediakan statement declare dengan opsi -i hanya untuk data integer (bilangan bulat). Contohnya: declare -i angka angka=100; Apabila variabel yang dideklarasikan menggunakan declare -i ternyata nilainya string (karakter), maka Bash akan mengubahnya ke nilai 0, tetapi jika tidak menggunakannya maka dianggap sebagai string. Test Test adalah utility sh shell yang berguna untuk memeriksa informasi tentang suatu file dan berguna untuk melakukan perbandingan suatu nilai baik string ataupun numerik syntaxnya:
test ekspresi
atau
[ expression ]
Proses kerja test yaitu dengan mengembalikan sebuah informasi status yang dapat bernilai 0 (benar) atau 1 (salah) dimana nilai status ini dapat dibaca pada variabel spesial $?. $ test 5 -gt 3 $ echo $? 0 pernyataan 5 -gt (lebih besar dari) 3 yang dievaluasi test menghasilkan 0 pada variabel status $? itu artinya pernyataan tersebut adalah benar, selanjutnya hasil dari evaluasi dengan expresi berikut $ test 3 -lt 1 $ echo $? 1
42
status bernilai 1, berarti pernyataan salah. Simbol -gt dan –lt pada contoh diatas disebut sebagai operator, secara sederhana operator adalah karakter khusus (spesial) yang melakukan operasi terhadap sejumlah operand, misalkan 2+3, "+" adalah operator sedangkan 2 dan 3 adalah operandnya, pada contoh test diatas yang bertindak sebagai oparatornya adalah -lt dan -gt, sedangkan bilangan disebelah kiri dan kanannya adalah operand. cukup banyak operator yang disediakan bash antara lain (dapat dilihat dengan man bash atau info bash di prompt shell): 1. Operator untuk integer Operator
Keterangan
bil1 -eq bil2 Mengembalikan Benar jika bil1 sama dengan bil2 bil1 -ne bil2 Benar jika bil1 tidak sama dengan bil2 bil1 -lt bil2 Benar jika bil1 lebih kecil dari bil2 bil1 -le bil2 Benar jika bil1 lebih kecil atau sama dengan bil2 bil1 -gt bil2 Benar jika bil1 lebih besar dari bil2 bil1 -ge bil2 Benar jika bil1 lebih besar atau sama dengan bil2 2. Operasi string Operator
Keterangan
-z STRING
Mengembalikan Benar jika panjang STRING adalah zero
-n STRING
Mengembalikan Benar jika panjang STRING adalah non zero
STRING1 == STRING2
Benar jika STRING1 sama dengan STRING2
3. Operator file Operator
Keterangan
-f FILE
Mengembalikan Benar jika FILE ada dan merupakan file biasa
-d FILE
Benar jika FILE ada dan merupakan direktory
4. Operator logika ekspr1 -o ekspr2 Benar jika jika salah satu ekspresi benar (or,||)
43
ekspr1 -a ekspr2 Benar jika ekspresi1 dan ekspresi2 benar (and,&&) ! ekspresi
Mengembalikan Benar jika ekspresi tidak benar (not!)
C. PROSEDUR 1. Masuk ke sistem operasi Linux. 2. Login sebagai stD3XXYYY. 3. Gunakan statement pada shell : Let , Expresi , Subtitusi dan Test. 4. Catatlah hasil dari setiap perintah pada prosedur no.3 sebagai laporan sementara.
D. PERCOBAAN Percobaan 1 : Menggunakan let 1. Operasi aritmatika (Perkalian) $ vi arit1.sh #!/bin/bash let a = 4*5 echo $a 2. Operasi aritmatika (Pembagian) $ vi arit2.sh #!/bin/bash let a = 20/5 let hasil = “$a” echo $hasil 3. Operasi aritmatika (Penjumlahan) $ vi arit3.sh #!/bin/bash let 20 + 5 let “hasil = 20 + 5” echo $hasil 4. Operasi aritmatika (Pengurangan) dengan perintah input read $ vi arit4.sh #!/bin/bash echo –n “input bil-1 = “ read b echo –n “input bil-2 = “ read c
44
let hasil = “$b - $c” echo “Hasil pengurangan = $hasil” 5. Kombinasi operasi aritmatika $ vi arit5.sh #!/bin/bash let x = 100 let y = 25 let “jumlah = x+y” let “kurang = x-y” let “perkalian = x*y” let “bagi = x/y” echo $jumlah echo $kurang echo $perkalian echo $bagi 6. Perhitungan nilai tukar rupiah $ vi arit6.sh #!/bin/bash echo –n “Masukkan nilai rupiah = “ read r let “USD = r/9000” let “YEN= r/3000” let “PESO = r/1750” echo “Nilai dolar = “$USD echo “Nilai yen = “$YEN echo “Nilai peso = “$PESO Percobaan 2 : Menggunakan expresi dan subtitusi 1. Perintah expresi dan subtitusi pada operasi aritmatika $ vi expres1.sh #!/bin/bash #mat1 a=10 b=5 #memakai let let jumlah=$a+$b let kurang=$a-$b let kali=$a*$b #memakai expr bagi=`expr $a / $b` #memakai perintah subtitusi $((ekspresi)) mod=$(($a%$b)) #sisa pembagian echo "$a+$b=$jumlah"
45
echo echo echo echo
"$a-$b=$kurang" "$a*$b=$kali" "$a/$b=$bagi" "$a%$b=$mod“
2. Fungsi expr untuk operasi matematika ataupun string $ mystr="linux" $ expr length $mystr 3. Fungsi expr untuk perhitungan aritmatika dan string $ expr \( 5 \* 9 \)% 4 $ tty $ expr `tty` : "/dev/tty\(.. \ )" 4. Statement declare dengan opsi -i untuk data integer (bilangan bulat). $ vi decl.sh #!/bin/bash declare -i angka angka=100; echo $angka; 5. Menggunakan Command subtitusi dengan fungsi expr $ $ $ $
frames=`expr 5 + 13` count=10 count=`expr $count + 1` echo $frames $count
Percobaan 3 : Menggunakan test 1. Menggunakan statement test dengan operator integer $ $ $ $
test echo test echo
5 -gt 3 $? 3 -lt 1 $?
2. Menggunakan statement test dengan operator untuk mengetahui kondisi nilai suatu variable $ vi test.sh #!/bin/sh if [ "$X" -lt "0" ] then echo "X is less than zero" fi if [ "$X" -gt "0" ]; then echo "X is more than zero" fi [ "$X" -le "0" ] && \ echo "X is less than or equal to
zero"
46
[ "$X" -ge "0" ] && \ echo "X is more than or equal to zero" $ X=5 $ export X $ ./test.sh 3. Meggunakan statement test dengan operator untuk mengetahui kondisi string $ vi test1.sh # String test. echo “**** String comparisons.” string=”In Xanadu did Kublai Khan...” # Note quotes around multi-word string. echo -n “test -z: “ if (test -z “$string”) then echo “Length of \$string is zero.” else echo “Length of \$string is NOT zero. Expected.” fi echo -n “test -n: “ if (test -n “$string”) then echo “Length of \$string is NOT zero. Expected.” else echo “Length of \$string is zero.” fi 4. Menggunakan statement test dengan operator file $ > > >
if test –r /etc/motd then echo Readable fi
$ [ -d /bin ] && echo /bin is a directory
E. Latihan 1. Buatlah program bash script untuk menghitung resistansi total dari rangkaian seri-paralel (campuran) 3 resistor jika diketahui nilai resistornya R1 = 5 ohm, R2 dan R3 = 10 ohm. 2. Buatlah program bash script untuk mengetahui variabel X berisi angka atau string dengan ketentuan sebagai berikut: a. jika variabel diberi nilai angka 0 atau lebih besar dari 0, maka ditampilkan
X adalah angka lebih dari atau sama dengan nol 47
b. jika variabel diberi nilai string "Hello" , maka ditampilkan pesan
X adalah string yang sesuai dengan kata Hello c. jika selain keduanya, maka ditampilkan isi dari variabel tersebut 3. Buatlah program bash script untuk membandingkan dua bilangan yang terdapat pada variabel X dan Y, sehinggah diperoleh hasil X=Y atau X != Y (X tidak sama dengan Y).
48