Anda di halaman 1dari 23

PEMROGRAMAN SISTEM UNIX

Bash Shell Scripting (1)

Willy Sudiarto Raharjo

Program Studi Teknik Informatika


UKDW@2010
Shell Script
● Merupakan file plain text, sehingga bisa dibuat
dengan sembarang text editor
● Tidak memperdulikan ekstensi
● Konvensi adalah .sh untuk bash shell script
● Pastikan sudah memiliki hak akses execute
● Gunakan chmod +x untuk menambahkannya
● Pastikan baris pertama mengandung baris ini
#!/bin/sh
#!/bin/bash
First Script

#!/bin/sh
# namafile: hello.sh
NAME=Willy // deklarasi variabel
echo Hello $NAME // tampilkan

Jalankan dengan sh hello.sh atau ./hello.sh

Congratulations for your 1st Shell Script !!!


Output
● Untuk menampilkan output ke layar:
● echo
– Mengabaikan white space
– Untuk memberikan karakter khusus, gunakan -e
● printf (seperti di C/C++)
– Mampu menerima format seperti %s, $d
Second Script

#!/bin/sh
#filename: loginfo.sh

echo -e "Tanggal dan jam saat ini : \c"


date
echo -e "Jumlah user saat ini : \c"
who | wc -l
echo -e "Informasi personal : \c"
whoami
exit 0
Karakter Khusus
Quotation
● Penggunaan “ (kutip ganda) akan menampilkan
nilai variabel pada perintah echo
● Penggunaan ' (kutip tunggal) akan
menganggap variabel sebagai string biasa
#!/bin/sh
# filename: quote.sh
var=willy
echo "$var"
echo '$var'
Positional Parameter
● Shell script mampu menerima parameter
setelah pemanggilan program
● Parameter disimpan berdasarkan posisi/urutan
● $0 merupakan nama program/fungsi itu sendiri
● $1 merupakan parameter ke 1
● Parameter diatas 9 harus menggunakan ${xx}
● Untuk menggeser parameter digunakan
perintah shift (n)
● Tanpa n, dianggap geser sebanyak 1 posisi ke kiri
Special Parameters
Special Parameters
#!/bin/sh
#filename: shell.sh
echo "$#:" $#
echo '$#:' $#
echo '$-:' $-
echo '$?:' $?
echo '$$:' $$
echo '$!:' $!
echo '$3:' $3
echo '$0:' $0
echo '$*:' $*
Echo '$@:' $@

Eksekusi: ./shell.sh satu dua tiga


Special Parameters
#!/bin/sh
# filename: parameter.sh

printf "Number of parameter: %d\n" $#


printf "First parameter: %s\n" "$1"
printf "Second parameter: %s\n" "$2"
printf "\nAll the parameters, each on
separate line:\n"
printf "\t%s\n" "$@"
printf "\nAll the parameters, on one line:\n"
printf "\t%s\n" "$*"
printf "\nEach word on its own line:\n"
printf "\t%s\n" $*

Eksekusi: ./parameter.sh the “brown dog” barks


Special Parameters
● $$: PID shell
● $!: PID dari proses background yang baru saja
dieksekusi
Operasi Matematika
● Nilai variabel selalu bertipe string
● Untuk melakukan operasi matematika, gunakan
expr
● Untuk menjalankan didalam script, gunakan `
(back tick)
● Contoh : hasil=`expr 5 + 4`
● Cara lain: $((expression))
● Contoh: hasil = $((5 + 4))
Catatan: backtick seringkali menjadi masalah pada BASH 3.2
Shift
#!/bin/sh
# filename: shift.sh
TOTAL=0

for TOKEN in $@
do
TOTAL=`expr $TOTAL + 1`
TOKEN=$1
shift
done

echo "Total tokens processed: $TOTAL"


Shift

#!/bin/sh
# filename: shift2.sh
echo “Number of positional parameter: $#”
echo “First parameter: ${1:-EMPTY}”
shift $(($#-1))
echo “Last parameter: ${1:-EMPTY}”
Exit Code
● Setiap code pasti memiliki exit code
● Untuk mengetahui status perintah terakhir,
gunakan $?
● Nilai 0 untuk status perintah yang sukses
● Nilai non 0 untuk status perintah yang gagal
● Contoh
● true; echo $?
● false; echo $?
Shell Variables
● $HOME: path home directory
● $IFS: karakter untuk separator field
● $PATH: daftar direktori yang digunakan untuk
pencarian sebuah aplikasi/perintah
● $PWD: Path direktori aktual
Shell Variables

#!/bin/sh
# filename: ifs.sh

IFS=" "
printf "%s\n" `date`
echo -e “$PWD\n”
echo -e “$PATH\n”
echo -e “$HOME\n”
Parameter Expansion
Menerima Inputan
● Untuk menerima input dari user, digunakan
perintah read
● Contoh
#!/bin/sh
#filename: read.sh
echo -e "Masukkan bilangan 1 : \c"
read bil1
echo -e "Masukkan bilangan 2 : \c"
read bil2
echo "Hasil : $(($bil1+$bil2))"
Output Control
● File descriptor
● Stdin (0) : input keyboard
● stdout (1) : layar monitor
● stderr (2) : layar monitor
● Silent running
● Script 2>&1 > /dev/null
● Redirect standard error ke standard output lalu
redirect ke /dev/null
● Berguna untuk script yang berjalan secara
background
Latihan
● Buat program yang mampu menampilkan
informasi:
● <user>@<nama-host> is using kernel <kernel-
name> <versi-kernel> on
<jenis_prosesor>(<platform-hardware)/<arsitektur-
prosesor>
● willysr@desktop is using kernel Linux 2.6.26.5 on
AMD Athlon (tm) (Authentic AMD)/i686
Latihan
● Buat program yang menerima 2 input (nama
dan umur)
● Input umur boleh kosong, tetapi jika kosong,
diasumsikan umurnya adalah 20 tahun
● Tampilkan output <nama> lahir pada tahun
xxxx

Anda mungkin juga menyukai