LAPORAN PRAKTIKUM 6B - SISTEM OPERASI (LINUX) "PEMROGRAMAN SHELL"
LAPORAN PRAKTIKUM 6B - SISTEM OPERASI (LINUX)
"PEMROGRAMAN SHELL"
- Pemrograman Shell
- Menggunakan struktur case – esac.
- Loop dengan while, for, do while.
- Membuat fungsi dan mengetahui cara memanggil fungsi tersebut.
- 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 (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.
2. LOGICAL && DAN || (SHELL LEVEL)
Notasi && dan || digunakan untuk menggabungkan instruksi shell sebagai alternatif untuk if then else. Notasi && dan || sering ditemukan adalah 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 mengeksekusi 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.
3. OPERATOR BILANGAN BULAT UNTUK TEST
Untuk membandingkan 2 buah bilangan, test memerlukan operator yang berbeda dengan string.
4. OPERATOR LOGICAL (TEST LEVEL)
Logical operator terdiri dari AND, OR dan NOT. Operator ini menggabungkan hasil ekspresi sebagai berikut :
NOT: symbol !
5. KONSTRUKSI IF THEN ELSE IF
6. HITUNGAN ARITMETIKA
7. INSTRUKSI EXIT
8. KONSTRUKSI CASE
12. 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.
Contoh:
F1( ) {
……..
……..
return 1
}
Perintah di atas adalah operator bilangan bulat untuk test. Variabel i berisi 5 maka dengan notasi test, variabel I -eq (sama dengan) 5 dan apabila dijalankan perintah echo $?, status exit bernilai 0 karena i memang berisi dengan nilai 5.
Notasi [] adalah cara lain untuk mengetes operator bilangan bulat .
Ekspresi penulisan expr antara lain adalah:
- Dipisahkan oleh ruang disetiap item
- Digunakan backslash untuk shell tertentu.
- String mengandung tanda kutip mengandung spasi dan karakter khusu lainnya tertutup.
Jika user memasukkan angka 1, maka program akan mencetak pengguna yang sedang aktif. Apabila user memasukkan angka 2, maka program akan mencetak tanggal hari ini. Apabila user memasukkan angka 3, maka program akan mencetak kalender bulan ini.
Hasil diatas merupakan inputan user dalam memilih ya atau tidak.
prog12.sh ini berisi konstruksi for dan wild card. Program ini akan menampilkan nama file yang berada pada current directory
Outputnya berupa isi dari current directory.
Program di atas akan menampilkan seluruh data yang berada pada current directory yang mempunyai ekstensi lst.
Karena pada direktori tidak terdapat file dengan ekstensi lst, sehingga ketika dijalankan, terdapat informasi bahwa “No such file or directory”.
Percobaan 16 - Konstruksi while-do-done
Program di atas memiliki konstruksi while do done. Yang mana jika program dijalankan, akan menunjukkan perulangan. Jika program dipilih 1/2/3, maka program akan terjadi looping. Namun ketika diinputkan angka 4, maka program akan berhenti.
Ketika angka 2 diinput ke program, maka program akan me-looping. Namun ketika menginputkan angka 4, maka program akan berhenti dan mencetak “Program berlanjut di sini setelah break”.
Pada program ini termasuk program dummy yang mana variabel A dinyatakan sebagai nilai -gt 100. Kemudian setelah nilai dimasukkan akan mencetak OK
Pada program ini kita telah membatasi nilai dengan 1-100. Sehingga saat kita menginputkan nilai antara 1-100, maka program akan mencetak OK. Tetapi saat kita menginputkan dengan nilai lebih dari 100, maka program tidak mencetak “OK” dan langsung berhenti.
Pada program ini berisi fungsi untuk return 1 yaitu echo “Fungsi F1” dan juga menampilkan status exit.
Pada program ini saat dijalankan hasilnya seperti pada gambar. Yaitu pertama mencetak fungsi F1, kemudian di return kembali sehingga mencetak lagi Fungsi F1, dan status exitnya menjadi 1 karena FALSE.
- Bila file asal tidak ada, berikan pesan, salin gagal.
- Bila file tujuan ada dan file tersebut adalah directory, beri pesan bahwa file tida k 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
# file: salin.sh
# Usage: salin.sh fasal ftujuan
if [ $# -ne 2]
then
echo “Error, usage: salin.sh file-asal file-tujuan”
fi
fasal=$1
ftujuan=$2
echo “salin.sh $fasal $ftujuan”
……
……
# file: checkdir.sh
# Usage: checkdir.sh DirectoryName
#
if [ $# -ne 1]
then
echo “Error, usage: checkdir.sh DirectoryName”
exit 1
[ … ] && …
- 10 juta pertama PPH 15%
- 25 juta berikutnya (sisa) PPH 25%
- Bila masih ada sisa, maka sisa tersebut PPH 35%
Contoh:
Gaji 8 jutaPPH = 15% * 8 jutaGaji 12 jutaPPH =15% * 10 juta + 25% * (12-10) jutaGaji 60 jutaPPH = 15% * 10 juta + 25% * 25 juta + 25% * (60-10-25) juta
Debugging: untuk melakukan tracing (debug) gunakan opsi –x pada eksekusi shell.
4. Buatlah program myprog.sh yang memproses parameter $1, nilai parameter harus berupa string:
- start
- stop
- status
- restart
- reload
#!/bin/sh
# See how we were called
case “$1” in
start)
echo “Ini adalah start”
;;
stop)
echo “Ini adalah stop”;;
*)
echo $”Usage:$0 {start|stop|restart|reload|status}”;;
esac
return
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.
#!/bin/sh
# Confirm whether we really want to run this service
confirm() {
local YES=”Y”
local NO=”N”
local CONT=”C”
while :
do
echo –n “(Y)es/(N)o/(C)ontinue? {Y] “
read answer
answer=`echo “$answer” | tr ‘[a-z]’ ‘[A-Z]’`
if [ “$answer” = “” –0 “$answer” = $YES ]
then
return 0
elif ….
then
return 2
elif ….
then
return 1
fi
done
}
Test fungsi diatas dengan program berikut :
$ vi testp.sh
. confirm.sh
confirm
if [ $? –eq 0 ]
then
echo “Jawaban YES OK”
then
echo “Jawaban NO”
else
echo “Jawaban CONTINUE”
fi
Perhatikan baris pertama, adalah loading dari fungsi confirm yang terdapat di script confirm.sh. Setelah eksekusi script tersebut, maka fungsi confirm dapat digunakan.
Komentar
Posting Komentar