Linux Untuk Pemula

67
Linux untuk Pemula :: Programming :: Pengantar Pemrograman Bash Shell di Linux Moch Fajar Table of contents 1. Pendahuluan 2. Pemrograman Shell 3. Kebutuhan Dasar 4. Simple Bash Script 5. Variabel 1. Environment variabel 2. Positional parameter 3. User defined variabel 6. Simple I/O 1. printf 2. read 3. Output dengan konstanta ansi 1. pengaturan warna 2. pengaturan posisi kursor 4. Output dengan tput 7. Seleksi & Perulangan 1. Test & Operator 1. Operator untuk integer 2. Operator untuk string 3. Operator untuk file 4. Operator logika 2. Seleksi 1. if 2. case 3. Perulangan 8. Array 9. Subrutin 1. Mengirim argumen ke fungsi 2. Cakupan variabel 1. Pendahuluan Hosting by: indoglobal.com

Transcript of Linux Untuk Pemula

Page 1: Linux Untuk Pemula

Linux untuk Pemula :: Programming :: Pengantar Pemrograman Bash Shell di Linux

Moch Fajar

Table of contents

1. Pendahuluan 2. Pemrograman Shell 3. Kebutuhan Dasar 4. Simple Bash Script 5. Variabel

1. Environment variabel 2. Positional parameter 3. User defined variabel

6. Simple I/O 1. printf 2. read 3. Output dengan konstanta ansi

1. pengaturan warna 2. pengaturan posisi kursor

4. Output dengan tput 7. Seleksi & Perulangan

1. Test & Operator 1. Operator untuk integer 2. Operator untuk string 3. Operator untuk file 4. Operator logika

2. Seleksi 1. if 2. case

3. Perulangan 8. Array 9. Subrutin

1. Mengirim argumen ke fungsi 2. Cakupan variabel

1. Pendahuluan

Apa itu shell ? shell adalah program (penterjemah perintah) yang menjembatani user dengan sistem operasi dalam hal ini kernel (inti sistem operasi), umumnya shell menyediakan prompt sebagai user interface, tempat dimana user mengetikkan perintah-perintah yang diinginkan baik berupa perintah internal shell (internal command), ataupun perintah eksekusi suatu file progam (eksternal command), selain itu shell memungkinkan user menyusun sekumpulan perintah pada sebuah atau beberapa file untuk dieksekusi sebagai program.

Macam - macam shell?

Hosting by:

indoglobal.com

Page 2: Linux Untuk Pemula

Tidak seperti sistem operasi lain yang hanya menyediakan satu atau 2 shell, sistem operasi dari keluarga unix misalnya linux sampai saat ini dilengkapi oleh banyak shell dengan kumpulan perintah yang sangat banyak, sehingga memungkinkan pemakai memilih shell mana yang paling baik untuk membantu menyelesaikan pekerjaannya, atau dapat pula berpindah-pindah dari shell yang satu ke shell yang lain dengan mudah, beberapa shell yang ada di linux antara lain:

Bourne shell(sh), C shell(csh), Korn shell(ksh), Bourne again shell(bash), dsb.

Masing - masing shell mempunyai kelebihan dan kekurangan yang mungkin lebih didasarkan pada kebutuhan pemakai yang makin hari makin meningkat, untuk dokumentasi ini shell yang digunakan adalah bash shell dari GNU, yang merupakan pengembangan dari Bourne shell dan mengambil beberapa feature (keistimewaan) dari C shell serta Korn shell, Bash shell merupakan shell yang cukup banyak digunakan pemakai linux karena kemudahan serta banyaknya fasilitas perintah yang disediakan.versi bash shell yang saya gunakan adalah 2.04

[fajar@linux$]echo $BASH_VERSIONbash 2.04.12(1)-release

Mungkin saat anda membaca dokumentasi ini versi terbaru dari bash sudah dirilis dengan penambahan feature yang lain.

2. Pemrograman Shell ?

Yaitu menyusun atau mengelompokkan beberapa perintah shell (internal atupun eksternal command) menjadi kumpulan perintah yang melakukan tugas tertentu sesuai tujuan penyusunnya. Kelebihan shell di linux dibanding sistem operasi lain adalah bahwa shell di linux memungkinkan kita untuk menyusun serangkaian perintah seperti halnya bahasa pemrograman (interpreter language), melakukan proses I/O, menyeleksi kondisi, looping, membuat fungsi, dsb. adalah proses - proses yang umumnya dilakukan oleh suatu bahasa pemrograman, jadi dengan shell di linux kita dapat membuat program seperti halnya bahasa pemrograman, untuk pemrograman shell pemakai unix atau linux menyebutnya sebagai script shell.

3. Kebutuhan Dasar

Sebelum mempelajari pemrograman Bash shell di linux sebaiknya anda telah mengetahui dan menggunakan perintah - perintah dasar shell baik itu internal command yang telah disediakan shell maupun eksternal command atau utility, seperti

cd, pwd, times, alias, umask, exit, logout, fg, bg, ls, mkdir, rmdir, mv, cp, rm, clear, ...

utilitas seperti cat, cut, paste, chmod, lpr,...

Page 3: Linux Untuk Pemula

redirection (cara mengirim output ke file atau menerima input dari file), menggunakan operator redirect >, >>, <, <<, contohnya:

ls > data

hasil ls dikirim ke file data, jika file belum ada akan dibuat tetapi jika sudah ada isinya akan ditimpa.

ls >> data

hampir sama, bedanya jika file sudah ada maka isinya akan ditambah di akhir file.

cat < data

file data dijadikan input oleh perintah cat

pipa (output suatu perintah menjadi input perintah lain), operatornya : | , contoh:

ls -l | sort -s

ouput perintah ls -l (long) menjadi input perintah sort -s (urutkan secara descending), mending pake ls -l -r saja :-)

ls -l | sort -s | more

cat <data | sort > databaru

Wildcard dengan karakter *, ?, [ ], contohnya:

ls i*

tampilkan semua file yang dimulai dengan i

ls i?i

tampilkan file yang dimulai dengan i, kemudian sembarang karakter tunggal, dan diakhiri dengan i

ls [ab]*

tampilkan file yang dimulai dengan salah satu karakter a atau b

4. Simple Bash Script

Langkah awal sebaiknya periksa dulu shell aktif anda, gunakan perintah ps (report process status)

[fajar@linux$]ps PID TTY TIME CMD 219 tty1 00:00:00 bash 301 tty1 00:00:00 ps

bash adalah shell aktif di system saya, jika disystem anda berbeda misalnya csh atau ksh ubahlah dengan perintah change shell

Page 4: Linux Untuk Pemula

[fajar@linux$]chshPassword:New shell [/bin/csh]:/bin/bashShell changed

atau dengan mengetikkan bash

[fajar@linux$]bash

sekarang coba anda ketikkan perintah dibawah ini pada prompt shell

echo "Script shell pertamaku di linux"

[fajar@linux$]echo "Script shell pertamaku di linux"Script shell pertamaku di linux

string yang diapit tanda kutip ganda (double quoted) akan ditampilkan pada layar anda, echo adalah statement (perintah) built-in bash yang berfungsi menampilkan informasi ke standard output yang defaultnya adalah layar. jika diinginkan mengulangi proses tersebut, anda akan mengetikkan kembali perintah tadi, tapi dengan fasilitas history cukup menggunakan tombol panah kita sudah dapat mengulangi perintah tersebut, bagaimana jika berupa kumpulan perintah yang cukup banyak, tentunya dengan fasilitas hirtory kita akan kerepotan juga mengulangi perintah yang diinginkan apalagi jika selang beberapa waktu mungkin perintah-perintah tadi sudah tertimpa oleh perintah lain karena history mempunyai kapasitas penyimpanan yang ditentukan. untuk itulah sebaiknya perintah-perintah tsb disimpan ke sebuah file yang dapat kita panggil kapanpun diinginkan.

coba ikuti langkah - langkah berikut:

1. Masuk ke editor anda, apakah memakai vi,pico,emacs,dsb...2. ketikkan perintah berikut 3. #!/bin/bash4. echo "Hello, apa khabar"

5. simpan dengan nama file tes6. ubah permission file tes menggunakan chmod 7. [fajar@linux$]chmod 755 tes

8. jalankan 9. [fajar@linux$]./tes

kapan saja anda mau mengeksekusinya tinggal memanggil file tes tersebut, jika diinginkan mengeset direktory kerja anda sehingga terdaftar pada search path ketikkan perintah berikut

PATH=$PATH:.

setelah itu script diatas dapat dijalankan dengan cara

[fajar@linux$]tesHello, apa khabar

Page 5: Linux Untuk Pemula

tanda #! pada /bin/bash dalam script tes adalah perintah yang diterjemahkan ke kernel linux untuk mengeksekusi path yang disertakan dalam hal ini program bash pada direktory /bin, sebenarnya tanpa mengikutkan baris tersebut anda tetap dapat mengeksekusi script bash, dengan catatan bash adalah shell aktif. atau dengan mengetikkan bash pada prompt shell.

[fajar@linux$]bash tes

tentunya cara ini kurang efisien, menyertakan path program bash diawal script kemudian merubah permission file sehingga dapat anda execusi merupakan cara yang paling efisien.

Sekarang coba kita membuat script shell yang menampilkan informasi berikut:

1. Waktu system2. Info tentang anda3. jumlah pemakai yang sedang login di system

contoh scriptnya: #!/bin/bash#myinfo

#membersihkan tampilan layarclear

#menampilkan informasiecho -n "Waktu system :"; dateecho -n "Anda :"; whoamiecho -n "Banyak pemakai :"; who | wc -l

sebelum dijalankan jangan lupa untuk merubah permission file myinfo sehingga dapat dieksekusi oleh anda

[fajar@linux$]chmod 755 myinfo[fajar@linux$]./myinfoWaktu system : Sat Nov 25 22:57:15 BORT 2001Anda : fajarBanyak pemakai : 2

tentunya layout diatas akan disesuaikan dengan system yang anda gunakan statement echo dengan opsi -n akan membuat posisi kursor untuk tidak berpindah ke baris baru karena secara default statement echo akan mengakhiri proses pencetakan ke standar output dengan karakter baris baru (newline), anda boleh mencoba tanpa menggunakan opsi -n, dan lihat perbedaannya. opsi lain yang dapat digunakan adalah -e (enable), memungkinkan penggunaan backslash karakter atau karakter sekuen seperti pada bahasa C atau perl, misalkan :

echo -e "\abunyikan bell"

jika dijalankan akan mengeluarkan bunyi bell, informasi opsi pada statement echo dan backslash karakter selengkapnya dapat dilihat via man di prompt shell.

Page 6: Linux Untuk Pemula

[fajar@linux$]man echo

5. Pemakaian Variabel

Secara sederhana variabel adalah pengenal (identifier) berupa satuan dasar penyimpanan yang isi atau nilainya sewaktu-waktu dapat berubah baik oleh eksekusi program (runtime program) ataupun proses lain yang dilakukan sistem operasi. dalam dokumentasi ini saya membagi variabel menjadi 3 kategori:

1. Environment Variable2. Positional Parameter3. User Defined Variable

5.1. Environment Variable

atau variabel lingkungan yang digunakan khusus oleh shell atau system linux kita untuk proses kerja system seperti variabel PS1, PS2, HOME, PATH, USER, SHELL,dsb...jika digunakan akan berdampak pada system, misalkan variabel PS1 yang digunakan untuk mengeset prompt shell pertama yaitu prompt tempat anda mengetikkan perintah - perintah shell (defaultnya "\s-\v\$"), PS2 untuk prompt pelengkap perintah, prompt ini akan ditampilkan jika perintah yang dimasukkan dianggap belum lengkap oleh shell (defaultnya ">"). anda dapat mengeset PS1 dan PS2 seperti berikut.

simpan dahulu isi PS1 asli system anda, sehingga nanti dapat dengan mudah dikembalikan

[fajar@linux$]PS1LAMA=$PS1

sekarang masukkan string yang diinginkan pada variabel PS1

[fajar@linux$]PS1="Hi ini Promptku!"Hi ini Promptku!PS2="Lengkapi dong ? "

maka prompt pertama dan kedua akan berubah, untuk mengembalikan PS1 anda ke prompt semula ketikkan perintah

[fajar@linux$]PS1=$PS1LAMA

Jika anda ingin mengkonfigurasi prompt shell, bash telah menyediakan beberapa backslash karakter diantaranya adalah:

\a ASCII bell character (07)

\d date dengan format "Weekday Month Date" (misalnya "Tue May 26")

\e ASCII escape character (033)

\H hostname (namahost)

\n newline (karakter baru)

Page 7: Linux Untuk Pemula

\w Direktory aktif

\t time dalam 24 jam dengan format HH:MM:SS

dll man bash:-)

contoh pemakaiannya:

[fajar@linux$]PS1="[\t][\u@\h:\w]\$"

agar prompt shell hasil konfigurasi anda dapat tetap berlaku (permanen) sisipkan pada file .bashrc atau .profile

5.2. Positional Parameter

atau parameter posisi yaitu variabel yang digunakan shell untuk menampung argumen yang diberikan terhadap shell baik berupa argumen waktu sebuah file dijalankan atau argumen yang dikirim ke subrutin. variabel yang dimaksud adalah 1,2,3,dst..lebih jelasnya lihat contoh script berikut :

#!/bin/bash#argumen1

echo $1 adalah salah satu $2 populer di $3

Hasilnya

[fajar@linux$]./argumen1 bash shell linuxbash adalah salah satu shell populer di linux

ada 3 argumen yang disertakan pada script argumen1 yaitu bash, shell, linux, masing2 argumen akan disimpan pada variabel 1,2,3 sesuai posisinya. variabel spesial lain yang dapat digunakan diperlihatkan pada script berikut:

#!/bin/bash#argumen2

clearecho "Nama script anda : $0";echo "Banyak argumen : $#";echo "Argumennya adalah: $*";

Hasilnya:

[fajar@linux$]./argumen 1 2 3 empatNama script anda : ./argumenBanyak argumen : 4Argumennya adalah : 1 2 3 empat

5.3. User Defined Variable

Page 8: Linux Untuk Pemula

atau variabel yang didefinisikan sendiri oleh pembuat script sesuai dengan kebutuhannya, beberapa hal yang perlu diperhatikan dalam mendefenisikan variabel adalah:

dimulai dengan huruf atau underscore hindari pemakaian spesial karakter seperti *,$,#,dll... bash bersifat case sensitive, maksudnya membedakan huruf besar dan kecil, a berbeda

dengan A, nama berbeda dengan Nama,NaMa,dsb..

untuk mengeset nilai variabel gunakan operator assignment (pemberi nilai)"=", contohnya :

myos="linux" #double-quotednama='pinguin' #single-quoted hasil=`ls -l`; #back-quotedangka=12

kalau anda perhatikan ada 3 tanda kutip yang kita gunakan untuk memberikan nilai string ke suatu variabel, adapun perbedaannya adalah:

dengan kutip ganda (double-quoted), bash mengizinkan kita untuk menyisipkan variabel di dalamnya. contohnya:

#!/bin/bash nama="pinguin" kata="Hi $nama, apa khabarmu" #menyisipkan variabel nama echo $kata;

Hasilnya:

Hi pinguin, apa khabarmu

dengan kutip tunggal (single-quoted), akan ditampilkan apa adanya. contohnya: #!/bin/bash nama="pinguin" kata='Hi $nama, apa khabarmu' #menyisipkan variabel nama echo $kata;

Hasilnya:

Hi $nama, apa khabarmu

dengan kutip terbalik (double-quoted), bash menerjemahkan sebagai perintah yang akan dieksekusi, contohnya:

#!/bin/bash hapus=`clear`; isi=`ls -l`; #hasil dari perintah ls -l disimpan di variabel isi #hapus layar echo $hapus

Page 9: Linux Untuk Pemula

#ls -l echo $isi;

Hasilnya: silahkan dicoba sendiri

Untuk lebih jelasnya lihat contoh berikut:

#!/bin/bash#varuse

nama="fajar"OS='linux'distro="macam-macam, bisa slackware,redhat,mandrake,debian,suse,dll"pc=1hasil=`ls -l $0`

clearecho -e "Hi $nama,\npake $OS\nDistribusi, $distro\nkomputernya, $pc buah"echo "Hasil ls -l $0 adalah =$hasil"

Hasilnya:

[fajar@linux$]./varuseHi fajar,pake linux Distribusi, macam-macam, bisa slackware,redhat,mandrake,debian,suse,dllkomputernya, 1 buahHasil ls -l ./varuse adalah -rwxr-xr-x 1 fajar users 299 Nov 21 06:24 ./varuse

untuk operasi matematika ada 3 cara yang dapat anda gunakan, dengan statement builtin let atau expr atau perintah subtitusi seperti contoh berikut:

#!/bin/bash#mat1

a=10b=5#memakai letlet jumlah=$a+$blet kurang=$a-$blet kali=$a*$b

#memakai exprbagi=`expr $a / $b`

#memakai perintah subtitusi $((ekspresi))modul =$(($a%$b)) #sisa pembagian

echo "$a+$b=$jumlah"echo "$a-$b=$kurang"echo "$a*$b=$kali"echo "$a/$b=$bagi"echo "$a%$b=$mod"

Page 10: Linux Untuk Pemula

Hasilnya:

[fajar@linux$]./mat110+5=1510-5=510*5=5010/5=210%5=0

fungsi expr begitu berdaya guna baik untuk operasi matematika ataupun string contohnya:

[fajar@linux$]mystr="linux"[fajar@linux$]expr length $mystr5

Mungkin anda bertanya - tanya, apakah bisa variabel yang akan digunakan dideklarasikan secara eksplisit dengan tipe data tertentu?, mungkin seperti C atau pascal, untuk hal ini oleh Bash disediakan statement declare dengan opsi -i hanya untuk data integer (bilangan bulat). Contohnya:

#!/bin/bash

declare -i angkaangka=100;echo $angka;

apabila variabel yang dideklarasikan menggunakan declare -i ternyata anda beri nilai string (karakter), maka Bash akan mengubahnya ke nilai 0, tetapi jika anda tidak menggunakannya maka dianggap sebagai string.

6. Simple I/O

I/O merupakan hal yang mendasar dari kerja komputer karena kapasitas inilah yang membuat komputer begitu berdayaguna. I/O yang dimaksud adalah device yang menangani masukan dan keluaran, baik itu berupa keyboard, floppy, layar monitor,dsb. sebenarnya kita telah menggunakan proses I/O ini pada contoh -contoh diatas seperti statement echo yang menampilkan teks atau informasi ke layar, atau operasi redirect ke ke file. selain echo, bash menyediakan perintah builtin printf untuk mengalihkan keluaran ke output standard, baik ke layar ataupun ke file dengan format tertentu, mirip statement printf kepunyaan bahasa C atau perl. berikut contohnya:

6.1 Output dengan printf

#!/bin/bash#pr1

url="pemula.linux.or.id";angka=32;

Page 11: Linux Untuk Pemula

printf "Hi, Pake printf ala C\n\t\a di bash\n";printf "My url %s\n %d decimal = %o octal\n" $url $angka $angka;printf "%d decimal dalam float = %.2f\n" $angka $angka

Hasilnya:

[fajar@linux$]./pr1Hi, Pake printf ala C di bashMy url pemula.linux.or.id32 decimal = 40 octal32 decimal dalam float = 32.00

untuk menggunakan format kontrol sertakan simbol %, bash akan mensubtitusikan format tsb dengan isi variabel yang berada di posisi kanan sesuai dengan urutannya jika lebih dari satu variabel, \n \t \a adalah karakter sekuen lepas newline,tab, dan bell,

Format control keterangan%d untuk format data integer%o octal%f float atau decimal%x Hexadecimal

pada script diatas %.2f akan mencetak 2 angka dibelakang koma, defaultnya 6 angka, informasi lebih lanjut dapat dilihat via man printf

6.2 Input dengan read

Setelah echo dan printf untuk proses output telah anda ketahui, sekarang kita menggunakan statement read yang cukup ampuh untuk membaca atau menerima masukan dari input standar

syntax :

read -opsi [nama_variabel...]

berikut contoh scriptnya:

#!/bin/bash#rd1

echo -n "Nama anda :"read nama;

echo "Hi $nama, apa khabarmu";echo "Pesan dan kesan :";read echo "kata $nama, $REPLY";

Page 12: Linux Untuk Pemula

Hasilnya:

[fajar@linux$]./rd1Nama anda : pinguinHi pinguin, apa khabarmuPesan & kesan : pake linux pasti asyk - asyk ajakata pinguin, pake linux pasti asyk - asyk aja

jika nama_variabel tidak disertakan, maka data yang diinput akan disimpan di variabel REPLY contoh lain read menggunakan opsi-t(TIMEOUT), -p (PROMPT), -s(SILENT), -n (NCHAR) dan -d(DELIM)

#!/bin/bash

read -p "User Name : " userecho -e "Password 10 karakter,\njika dalam 6 second tidak dimasukkan pengisian password diakhiri"read -s -n 10 -t 6 passecho "kesan anda selama pake linux, _underscore=>selesai"read -d _ kesan

echo "User = $user"echo "Password = $pass"echo "Kesan selama pake linux = $kesan"

Hasilnya: silahkan dicoba sendiri :-)

Opsi Keterangan-p memungkinkan kita membuat prompt sebagai informasi pengisian-s membuat input yang dimasukkan tidak di echo ke layar (seperti layaknya password di linux)-n menentukan banyak karakter yang diinput-d menentukan karakter pembatas masukan

informasi secara lengkap lihat man bash

6.3. Output dengan konstanta ANSI

6.3.1. Pengaturan Warna

Untuk pewarnaan tampilan dilayar anda dapat menggunakan konstanta ANSI (salah satu badan nasional amerika yang mengurus standarisasi).

syntaxnya:

\033[warnam

Page 13: Linux Untuk Pemula

Dimana:m menandakan setting color

contohnya:

[fajar@linux$]echo -e "\033[31m HELLO\033[0m"HELLO

konstanta 31m adalah warna merah dan 0m untuk mengembalikan ke warna normal (none), tentunya konstanta warna ansi ini dapat dimasukkan ke variabel PS1 untuk mengatur tampilan prompt shell anda, contohnya:

[fajar@linux$]PS1="\033[34m"[fajar@linux$]

berikut daftar warna yang dapat anda gunakan:

foreground None 0m Black 0;30 Dark Gray 1;30 Red 0;31 Light Red 1;31 Green 0;32 Light Green 1;32 Brown 0;33 Yellow 1;33 Blue 0;34 Light Blue 1;34 Purple 0;35 Light Purple 1;35 Cyan 0;36 Light Cyan 1;36 Light Gray 0;37 White 1;37background dimulai dengan 40 untuk BLACK,41 RED,dstlain-lain 4 underscore,5 blink, 7 inverse

tentunya untuk mendapatkan tampilan yang menarik anda dapat menggabungkannya antara foreground dan background

[fajar@linux$]echo -e "\033[31;1;33m Bash and ansi color\033[0m"

Bash and ansi color

6.3.2 Pengaturan posisi kursor

sedangkan untuk penempatan posisi kursor, dapat digunakan salah satu cara dibawah.

Menentukan posisi baris dan kolom kursor: \033[baris;kolomH

Pindahkan kursor keatas N baris: \033[NA

Pindahkan kursor kebawah N baris: \033[NB

Pindahkan kursor kedepan N kolom: \033[NC

Page 14: Linux Untuk Pemula

Pindahkan kursor kebelakang N kolom: \033[ND

Contohnya:

#!/bin/bash

SETMYCOLOR="\033[42;1;37m"GOTOYX="\033[6;35H"clearecho -e "\033[3;20H INI DIBARIS 3, KOLOM 20"echo -e "\033[44;1;33;5m\033[5;35H HELLO\033[0m";echo -e "$SETMYCOLOR$GOTOYX ANDA LIHAT INI\033[0m"

Hasilnya: Silahkan dicoba sendiri

Menggunakan utulity tput untuk penempatan posisi kursor

kita dapat pula mengatur penempatan posisi kursor di layar dengan memanfaatkan utility tput,

syntaxnya:

tput cup baris kolom

contohnya:

#!/bin/bash

cleartput cup 5 10echo "HELLO"tput cup 6 10echo "PAKE TPUT"

jika dijalankan anda akan mendapatkan string HELLO di koordinat baris 5 kolom 10, dan string PAKE TPUT dibaris 6 kolom 10. informasi selengkapnya tentang tput gunakan man tput, atau info tput

7. Seleksi dan Perulangan

Bagian ini merupakan ciri yang paling khas dari suatu bahasa pemrograman dimana kita dapat mengeksekusi suatu pernyataan dengan kondisi terntentu dan mengulang beberapa pernyataan dengan kode script yang cukup singkat.

7.1 test dan operator

test adalah utility sh shell yang berguna untuk memeriksa informasi tentang suatu file dan berguna untuk melakukan perbandingan suatu nilai baik string ataupun numerik

Page 15: Linux Untuk Pemula

syntaxnya: test ekspresi

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 $?.

[fajar@linux$]test 5 -gt 3[fajar@linux$]echo $?0

pernyataan 5 -gt (lebih besar dari) 3 yang dievaluasi test menghasilkan 0 pada variabel status $? itu artinya pernyataan tersebut benar tetapi coba anda evaluasi dengan expresi berikut

[fajar@linux$]test 3 -lt 1[fajar@linux$]echo $?1

status bernilai 1, berarti pernyataan salah.

anda lihat simbol -gt dan -lt, itulah yang 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 tadi yang bertindak sebagai oparatornya adalah -lt dan -gt, sedangkan bilangan disebelah kiri dan kanannya adalah operand. cukup banyak operator yang disediakan bash antara lain:

7.1.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

7.1.2. Operasi string

Operator Keterangan

-z STRING Mengembalikan Benar jika panjang STRING adalah zero

STRING1 == STRING2 -||- Benar jika STRING1 sama dengan STRING2

7.1.3 Operator file

Operator Keterangan

-f FILE Mengembalikan Benar jika FILE ada dan merupakan file biasa

Page 16: Linux Untuk Pemula

-d FILE -||- Benar jika FILE ada dan meruapakan direktory

7.1.3 Operator logika

ekspr1 -o ekspr2 Benar jika jika salah satu ekspresi benar (or,||)

ekspr1 -a ekspr2 Benar jika ekspresi1 dan ekspresi2 benar (and,&&)

! ekspresi Mengembalikan Benar jika ekspresi tidak benar (not!)

untuk informasi lebih lengkap man bash atau info bash di prompt shell anda.

7.2. Seleksi

7.2.1 if

Statement builtin if berfungsi untuk melakukan seleksi berdasarkan suatu kondisi tertentu

syntax:

if test-command1; then perintah1;elif test-command2; then perintah2;else alternatif_perintah;fi

contoh script if1:

#!/bin/bash#if1

clear;if [ $# -lt 1 ]; then echo "Usage : $0 [arg1 arg2 ...]" exit 1;fi

echo "Nama script anda : $0";echo "Banyak argumen : $#";echo "Argumennya adalah: $*";

Hasilnya:

[fajar@linux$]./if1 Usage : ./if1 [arg1 arg2 ...]

Page 17: Linux Untuk Pemula

statement dalam blok if...fi akan dieksekusi apabila kondisi if terpenuhi, dalam hal ini jika script if1 dijalankan tanpa argumen. kita tinggal membaca apakah variabel $# lebih kecil (less than) dari 1, jika ya maka eksekusi perintah di dalam blok if ..fi tsb. perintah exit 1 akan mengakhiri jalannya script, angka 1 pada exit adalah status yang menandakan terdapat kesalahan, status 0 berarti sukses, anda dapat melihat isi variabel $? yang menyimpan nilai status exit, tetapi jika anda memasukkan satu atau lebih argumen maka blok if...fi tidak akan dieksekusi, statement diluar blok if..filah yang akan dieksekusi.

contoh script if2:

#!/bin/bash

kunci="bash";read -s -p "Password anda : " passif [ $pass==$kunci ]; then echo "Sukses, anda layak dapat linux"else echo "Wah sorry, gagal nih";fi

Hasilnya

[fajar@linux$]./if2Password anda : bashSukses, anda layak dapat linux[fajar@linux$]./if2Password anda : BashWah sorry, gagal nih

klausa else akan dieksekusi jika if tidak terpenuhi, sebaliknya jika if terpenuhi maka else tidak akan dieksekusi

contoh script if3: penyeleksian dengan kondisi majemuk

#!/bin/bash

clearecho "MENU HARI INI";echo "-------------";echo "1. Bakso ";echo "2. Gado-Gado ";echo "3. Exit ";read -p "Pilihan anda [1-3] :" pil;

if [ $pil -eq 1 ]; then echo "Banyak mangkuk ="; read jum let bayar=jum*1500;elif [ $angka -eq 2 ]; then echo "Banyak porsi =";

Page 18: Linux Untuk Pemula

read jum let bayar=jum*2000;elif [ $angka -eq 3 ]; then exit 0else echo "Sorry, tidak tersedia" exit 1fi

echo "Harga bayar = Rp. $bayar"echo "THX"

Hasilnya:

[fajar@linux$]./if3MENU HARI INI-------------1. Bakso 2. Gado-Gado 3. Exit Pilihan anda :2

Banyak porsi = 2

Harga bayar = Rp. 4000THX

7.2.2. statement builtin case

seperti halnya if statement case digunakan untuk menyeleksi kondisi majemuk, dibanding if, pemakaian case terasa lebih efisien

syntax:

case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]...esac

contoh script cs1

#!/bin/bash

clearecho -n "Masukkan nama binatang :";read binatang;

case $binatang in pinguin | ayam | burung ) echo "$binatang berkaki 2" break ;; onta | kuda | anjing ) echo "$binatang berkaki 4" break ;;

Page 19: Linux Untuk Pemula

*) echo "$binatang blom didaftarkan" break ;;esac

Hasilnya:

[fajar@linux$]./cs1Masukkan nama binatang : pinguinpinguin berkaki 2

7.3. Perulangan

7.3.1. statement for

syntax:for NAME [in WORDS ...]; do perintah; donecontoh script for1#!/bin/bash

for angka in 1 2 3 4 5;do echo "angka=$angka";done

Hasilnya:

[fajar@linux$]./for1angka=1angka=2angka=3angka=4angka=5

contoh script for2 berikut akan membaca argumen yang disertakan waktu script dijalankan

#!/bin/bash

for var do echo $vardone

Hasilnya:

[fajar@linux$]./for2 satu 2 tigasatu2tiga

atau variasi seperti berikut

Page 20: Linux Untuk Pemula

#!/bin/bash

for var in `cat /etc/passwd`do echo $vardone

Hasilnya: hasil dari perintah cat terhadap file /etc/passwd disimpan ke var dan ditampilkan menggunakan echo $var ke layar, mendingan gunakan cat /etc/passwd saja biar efisien. :-)

7.3.2. statement while

selama kondisi bernilai benar atau zero perintah dalam blok while akan diulang terus

syntax:

while KONDISI; do perintah; done;

contoh script wh1 mencetak bilangan ganjil antara 1-10

#!/bin/bash

i=1;while [ $i -le 10 ];do echo "$i,"; let i=$i+2;done

Hasilnya:

[fajar@linux$]./wh11,3,5,7,9,

kondisi tidak terpenuhi pada saat nilai i=11 (9+2), sehingga perintah dalam blokwhile tidak dieksekusi lagicontoh script wh2 akan menghitung banyak bilangan genap dan ganjil yang ada.

#!/bin/bash

i=0;bil_genap=0;bil_ganjil=0;

echo -n "Batas loop :";read batas

if [ -z $batas ] || [ $batas -lt 0 ]; then echo "Ops, tidak boleh kosong atau Batas loop harus >= 0"; exit 0;fi

Page 21: Linux Untuk Pemula

while [ $i -le $batas ]; do echo -n "$i,"; if [ `expr $i % 2` -eq 0 ]; then let bil_genap=$bil_genap+1; else let bil_ganjil=$bil_ganjil+1; fi let i=$i+1; #counter untuk mencapai batasdone

echo echo "banyak bilangan genap = $bil_genap";echo "banyak bilangan ganjil = $bil_ganjil";

Hasilnya:

[fajar@linux$]./wh2Batas loop : 100,1,2,3,4,5,6,7,8,9,10,banyak bilangan genap = 6banyak bilangan ganjil = 5

untuk mengetahui apakah nilai i berupa bilangan genap kita cukup menggunakan operasi matematika % (mod), jika nilai i dibagi 2 menghasilkan sisa 0 berarti i adalah bilangan genap (semua bilangan genap yang dibagi dengan 2 mempunyai sisa 0) maka pencacah (bil_genap) dinaikkan 1, selain itu i bilangan ganjil yang dicatat oleh pencacah bil_ganjilproses ini dilakukan terus selama nilai i lebih kecil atau samadengan nilai batas yang dimasukkan. script juga akan memeriksa dahulu nilai batas yang dimasukkan apabila kosong atau lebih kecil dari 0 maka proses segera berakhir.tentunya dengan statement while kita sudah dapat membuat perulangan pada script kedai diatas agar dapat digunakan terus-menerus selama operator masih ingin melakukan proses perhitungan. lihat contoh berikut:

#!/bin/bash#kedai

lagi='y'while [ $lagi == 'y' ] || [ $lagi == 'Y' ];do clear echo "MENU HARI INI"; echo "-------------"; echo "1. Bakso "; echo "2. Gado-Gado "; echo "3. Exit "; read -p "Pilihan anda [1-3] :" pil;

if [ $pil -eq 1 ]; then echo -n "Banyak mangkuk ="; read jum let bayar=jum*1500;elif [ $pil -eq 2 ];

Page 22: Linux Untuk Pemula

then echo -n "Banyak porsi ="; read jum let bayar=jum*2000;elif [ $pil -eq 3 ];then exit 0else echo "Sorry, tidak tersedia" exit 1fi

echo "Harga bayar = Rp. $bayar"echo "THX"echo echo -n "Hitung lagi (y/t) :";read lagi;

#untuk validasi input while [ $lagi != 'y' ] && [ $lagi != 'Y' ] && [ $lagi != 't' ] && [ $lagi != 'T' ]; do echo "Ops, isi lagi dengan (y/Y/t/Y)"; echo -n "Hitung lagi (y/t) :"; read lagi; done

done

proses pemilihan menu dan perhitungan biaya akan diulang terus selama anda memasukkan y/Y dan t/T untuk berhenti. dalam script terdapat validasi input menggunakan while, sehingga hanya y/Y/t/T saja yang dapat diterima soalnya saya belum mendapatkan fungsi yang lebih efisien :-)

7.3.3. statement until

jika while akan mengulang selama kondisi benar, lain halnya dengan statement until yang akan mengulang selama kondisi salah.berikut contoh script ut menggunakan until

#!/bin/bash

i=1;until [ $i -gt 10 ];do echo $i; let i=$i+1done

Hasilnya:

[fajar@linux$]./ut1,2,3,4,5,6,7,8,9,10,

Page 23: Linux Untuk Pemula

perhatikan kodisi until yang salah [ $i -gt 10], dimana nilai awal i=1 dan akan berhenti apabila nilai i = 11 (bernilai benar) 11 -gt 10.

7.3.4. statement select

select berguna untuk pembuatan layout berbentuk menu pilihan, anda lihat contoh script pembuatan menu diatas kita hanya melakukannya dengan echo secara satu persatu, dengan select akan terlihat lebih efisien.

syntax:

select varname in (&ltitem list>); do perintah; done

sewaktu dijalankan bash akan menampilkan daftar menu yang diambil dari item list, serta akan menampilkan prompt yang menunggu masukan dari keyboard, masukan tersebut oleh bash disimpan di variabel builtin REPLY, apabila daftar item list tidak dituliskan maka bash akan mengambil item list dari parameter posisi sewaktu script dijalankan. lebih jelasnya lihat contoh berikut:

#!/bin/bash#menu1

clearselect menudo echo "Anda memilih $REPLY yaitu $menu"done

Hasilnya:

layout:[fajar@linux$]./menu1 Slackware Redhat Mandrake1) Slackware2) Redhat3) Mandrake #? 1Anda memilih 1 yaitu Slackware

karena item list tidak disertakan dalam script, maka sewaktu script dijalankan kita menyertakan item list sebagai parameter posisi, coba gunakan statement select pada program kedai diatas.

#!/bin/bash#kedai

lagi='y'while [ $lagi == 'y' ] || [ $lagi == 'Y' ];do clear select menu in "Bakso" "Gado-Gado" "Exit"; case $REPLY in 1) echo -n "Banyak mangkuk =";

Page 24: Linux Untuk Pemula

read jum let bayar=jum*1500; ;; 2) echo -n "Banyak porsi ="; read jum let bayar=jum*2000; ;; 3) exit 0 ;; *) echo "Sorry, tidak tersedia" ;; esac do

echo "Harga bayar = Rp. $bayar"echo "THX"echo echo -n "Hitung lagi (y/t) :";read lagi;

#untuk validasi input while [ $lagi != 'y' ] && [ $lagi != 'Y' ] && [ $lagi != 't' ] && [ $lagi != 'T' ]; do echo "Ops, isi lagi dengan (y/Y/t/Y)"; echo -n "Hitung lagi (y/t) :"; read lagi; donedone

8. Array

adalah kumpulan variabel dengan tipe sejenis, dimana array ini merupakan feature Bash yang cukup indah :-) dan salah satu hal yang cukup penting dalam bahasa pemrograman, anda bisa membayangkan array ini sebagai tumpukan buku - buku dimeja belajar. lebih jelasnya sebaiknya lihat dulu contoh script berikut:

#!/bin/bash#array1

buah=(Melon,Apel,Durian);echo ${buah[*]};

Hasilnya:

[fajar@linux$]./array1.Melon,Apel,Durian

anda lihat bahwa membuat tipe array di Bash begitu mudah, secara otomatis array buah diciptakan dan string Melon menempati index pertama dari array buah, perlu diketahui bahwa array di Bash dimulai dari index 0, jadi array buah mempunyai struktur seperti berikut:

Page 25: Linux Untuk Pemula

buah[0] berisi Melonbuah[1] berisi Apelbuah[2] berisi Durian

0,1,2 adalah index array, berarti ada 3 elemen pada array buah, untuk menampilkan isi semua elemen array gunakan perintah subtitusi seperti pada contoh diatas, dengan index berisi "*" atau "@". dengan adanya index array tentunya kita dapat mengisi array perindexnya dan menampilkan isi array sesuai dengan index yang diinginkan. anda lihat contoh berikut:

#!/bin/bash#array2

bulan[0]=31bulan[1]=28bulan[2]=31bulan[3]=30bulan[4]=31bulan[5]=30bulan[6]=31bulan[7]=31bulan[8]=30bulan[9]=31bulan[10]=30bulan[11]=31echo "Banyak hari dalam bulan November adalah ${bulan[10]} hari"

Hasilnya:

[fajar@linux$]./array2Banyak hari dalam bulan November adalah 30 hari

sebenarnya kita dapat mendeklarasikan array secara eksplisit menggunakan statement declare

contohnya:

declare -a myarray

mendeklarasikan variabel myarray sebagai array dengan opsi -a, kemudian anda sudah dapat memberinya nilai baik untuk semua elemen atau hanya elemen tertentu saja dengan perulangan yang telah kita pelajari pengisian elemen array dapat lebih dipermudah, lihat contoh :

#!/bin/bash#array3

#deklarasikan variabel arraydeclare -a angka

#cleari=0;while [ $i -le 4 ];dolet isi=$i*2;

Page 26: Linux Untuk Pemula

angka[$i]=$isi;let i=$i+1;done

#tampilkan semua elemen array#dengan indexnya berisi "*" atau "@"echo ${angka[*]};

#destroy array angka (memory yang dipakai dibebaskan kembali)unset angka

Hasilnya:

[fajar@linux$]./array30 2 4 6 8

9. Subrutin atau Fungsi

merupakan bagian script atau program yang berisi kumpulan beberapa statement yang melaksanakan tugas tertentu. dengan subrutin kode script kita tentunya lebih sederhana dan terstruktur, karena sekali fungsi telah dibuat dan berhasil maka akan dapat digunakan kapan saja kita inginkan. beberapa hal mengenai fungsi ini adalah:

Memungkinkan kita menyusun kode script ke dalam bentuk modul-modul kecil yang lebih efisien dengan tugasnya masing-masing.

Mencegah penulisan kode yang berulang - ulang.

untuk membuat subrutin shell telah menyediakan keyword function seperti pada bahasa C, akan tetapi ini bersifat optional (artinya boleh digunakan boleh tidak).

syntax:

function nama_fungsi() { perintah; }

nama_fungsi adalah pengenal (identifier) yang aturan penamaannya sama seperti pemberian nama variabel, setelah fungsi dideklarasikan atau dibuat anda dapat memaggilnya dengan menyebutkan nama fungsinya. lebih jelasnya lihat contoh script fungsi1 berikut:

#!/bin/bash

function say_hello() { echo "Hello, apa kbabar"}

#panggil fungsi say_hello;

#panggil sekali lagi

Page 27: Linux Untuk Pemula

say_hello;

Hasilnya:

[fajar@linux$]./fungsi1Hello, apa khabar Hello, apa khabar

jika keyword function disertakan maka kita boleh tidak menggunakan tanda kurung (), tetapi jika keyword function tidak disertakan maka tanda kurung harus digunakan, lihat contoh berikut:

#!/bin/bash

function say_hello{ echo "Hello,apa khabar"}

balas(){ echo "Baik-baik saja"; echo "Bagaimana dengan anda ?";}

#panggil fungsi say_hellosay_hello;

#panggil fungsi balasbalas;

Hasilnya:

[fajar@linux$]./fungsi2Hello, apa khabarBaik-baik sajaBagaimana dengan anda ?

9.1. Mengirim argumen sebagai parameter ke fungsi

tentunya suatu fungsi lebih berdaya guna apabila dapat menerima argumen yang dikirim oleh pemanggilnya dan memproses argumen tsb didalam fungsinya, fungsi yang kita buat pada bash shell tentunya dapat melakukan hal tsb, apabila pada pemanggilan fungsi kita menyertakan argumen untuk diproses fungsi tsb, maka bash akan menyimpan argumen - argumen tsb pada parameter posisi 1,2,3,dst..., nah dengan memanfaatkan parameter posisi tsb tentunya kita dapat mengambil nilai yang dikirim. lebih jelasnya anda lihat contoh berikut:

#!/bin/bash

function hello{ if [ -z $1 ]; then

Page 28: Linux Untuk Pemula

echo "Hello, apa khabar anda" else echo "Hello $1, apa khabar"; fi}

#masukkan nama anda disiniecho -n "Nama anda :";read nama

#panggil fungsi dan kirim isi variabel nama ke fungsi untuk dicetakhello $nama;

Hasilnya:

[fajar@linux$]./fungsi3Nama anda : pinguinHello pinguin, apa khabar

lihat fungsi hello, sebelum mencetak pesan kita melakukan pemeriksaan dengan if terhadap parameter posisi $1 apabila kosong maka pesan "Hello, apa khabar anda" yang akan ditampilkan, tetapi jika ada string yang kita input maka string tersebut akan dicetak di dalam blok else pada fungsi. argumen pertama diteruskan ke variabel 1, argumen kedua pada variabel 2, dst.. jika argumen yang dikirim lebih dari satu.

9.2. Cakupan Variabel

secara default variabel - variabel yang digunakan dalam script adalah variabel bersifat global, maksud global adalah bahwa variabel tsb dikenal dan dapat diakses oleh semua fungsi dalam script, tetapi bash menyediakan keyword local yang berfungsi membatasi cakupan (scope) suatu variabel agar dikenal hanya oleh fungsi yang mendeklarasikannya.coba lihat contoh berikut:

#!/bin/bash

proses(){ echo "Isi variabel a=$a";}

a=2;proses();proses $a

Hasilnya:

Isi variabel a=2Isi variabel a=2

coba anda tambahkan local a pada fungsi proses menjadi

Page 29: Linux Untuk Pemula

proses(){ local a; echo -e "a didalam fungsi, a=$a";}

a=10;proses()

echo "a diluar fungsi, a=$a"proses $a

Hasilnya:

a didalam fungsi, a= a diluar fungsi, a=10a didalam fungsi a=

nah jelas perbedaannya jika mendeklarasikan variabel memakai keyword local menyebabkan variabel tersebut hanya berlaku pada fungsi yang mendekalarasikannya. pada contoh dalam fungsi proses variabel a dideklarasikan sebagai variabel local dan tidak diberi nilai.

Diakhir dokumentasi ini saya menyertakan contoh script sederhana untuk melakukan entry data-data KPLI (Kelompok Pencinta Linux Indonesia) dan menyimpannya ke sebuah file. perintah-perintah shell dan beberapa utility yang digunakan adalah:

apa yang telah anda pelajari diatas utility test, touch operator redirection ">>" untuk menambah data sleep, grep (global regular expression parser), cut, cat, | (pipa), sort dan more tput untuk menempatkan cursor pada koordinat tertentu (baris kolom)

sebagai latihan silahkan mengembangkan sendiri script dibawah ini:

#!/bin/bash#------------------------------------------------------------------#(C) Moh.fajar Makassar 2001, contoh script buat para linuxer#file ini adalah public domain, silahkan mendistribusikan kembali#atau mengubahnya asalkan anda mengikuti aturan - aturan dari GPL#

menu(){ clear tput cup 2 8; echo "SIMPLE DATABASE KPLI" tput cup 3 11; echo "1. Entry Data" tput cup 4 11; echo "2. Cari Data" tput cup 5 11; echo "3. Cetak Data" tput cup 6 11;

Page 30: Linux Untuk Pemula

echo "4. Exit" tput cup 7 9; read -p "Pilihan anda [1-4] :" pil; while [ -z $pil ] || [ $pil -lt 1 ] || [ $pil -gt 4 ]; do tput cup 7 9 read -p "Pilihan anda [1-4] :" pil; done

}

entry(){ tput cup 9 27 echo "Enrty data" tput cup 11 27 echo -n "Nama KPLI :"; read nama; while [ -z $nama ] || grep $nama $data -q -i; do tput cup 13 27 echo "Ops Tidak boleh kosong atau $nama sudah ada"; sleep 3 clear tput cup 11 27 echo -n "Nama KPLI :"; read nama; done tput cup 12 27 echo -n "Kota :"; read kota; tput cup 13 27 echo -n "Alamat :"; read alamat; tput cup 14 27 echo -n "Email :"; read email; tput cup 16 27 echo "Rekam data ke file" if !(echo $nama:$kota:$alamat:$email>>$data); then echo "Ops, gagal merekam ke file" exit 1; fi sleep 3;}

cari(){ tput cup 9 27 echo "Cari data per record" tput cup 11 27 echo -n "Nama KPLI :"; read nama;

Page 31: Linux Untuk Pemula

while [ -z $nama ]; do tput cup 13 27 echo "Ops, nama tidak boleh kosong" sleep 3; tput cup 11 27 echo -n "Nama KPLI :"; read nama; done

if found=`grep $nama $data -n -i`; then tput cup 12 27 echo -n "Kota :"; echo "$found" | cut -d: -f3 tput cup 13 27 echo -n "Alamat :"; echo "$found" | cut -d: -f4 tput cup 14 27 echo -n "Mail :"; echo "$found" | cut -d: -f5 tput cup 16 27 echo -n "Record ke- $found" | cut -d: -f1 else tput cup 13 27 echo "Ops, data tidak ditemukan"; fi

}

cetak(){ tput cup 12 27 echo "Tampilkan Data" tput cup 13 27 echo -n "1->Ascendig, 2->Descending :" read mode clear; if [ -z $mode ] || [ $mode -eq 1 ]; then cat $data | sort | more -d elif [ $mode -eq 2 ]; then cat $data | sort -r | more -d else cat $data | sort | more -d fi }

#block utama

data="mydata"

if !(test -e $data); then if !(touch $data); then echo "gagal buat file database" exit 1 fi fi

Page 32: Linux Untuk Pemula

lagi='y' while [ $lagi == 'y' ] || [ $lagi == 'Y' ] do menu; case $pil in 1) entry ;; 2) cari; ;; 3) cetak ;; 4) clear; exit 0; ;; *) echo "$pil, tidak ada dalam pilihan" ;; esac

tput cup 18 27 echo -n "Ke Menu (y/t): "; read lagi; done

clear

tentunya kemampuan script ini dapat kita tambahkan dengan mudah sehingga mendekati program database sesungguhnya, utility seperti tr, paste, egrep, lpr, dll.. cukup baik dan membantu untuk digunakan.

sumber :man bash,info bash,man tput,man terminfosaran & kritikan kirim ke [email protected]

Linux untuk Pemula :: Programming :: Pengantar Pemrograman Bash Shell di Linux Komentari Halaman Ini(di Window Baru)

Site didesain oleh Zakaria menggunakan GAKR. Isi diluar tanggung jawab Linux untuk Pemula

Page 34: Linux Untuk Pemula

catatanlepas.com

Depan Depan

Fakta Fakta

Pustaka Pustaka

Komputer Komputer

Lain-Lain Lain-Lain

Unduh Unduh

Artikel Terbaru

Script PHP Untuk Monitoring File Berekstensi .TXT Pada Sebuah Folder Tips Mengirim Email Melalui CLI di Zimbra Cloning dan Restore Menggunakan Clonezilla Tips Untuk Menampilkan Judul Pada Log Sendmail Instalasi Awstats di Centos 5.6

Artikel Terpopuler

Tips Agar Doa Terkabul Monitoring Squid Proxy Menggunakan sqstat, SARG, dan Lightsquid Instalasi Postfix Menggunakan Courier IMAP di Centos 5.4

cari...

Page 35: Linux Untuk Pemula

Membuat Server DNS dengan chroot di Centos 5 Instalasi dan Konfigurasi Squid

Komentar Terakhir

[07.09.2012-05:07:40... _,The residence that might be mild ? ...

[07.06.2012-15:07:42... Dear Deddy, OK, sip.

[07.06.2012-11:07:14... Dear mas admin, baiklah mas, saran...

[07.06.2012-10:07:47... Dear Yunus, Apakah konfigurasi datab...

[07.05.2012-13:07:02... salam kenal pak, saya sudah setting p...

Home Komputer Pemrograman Dasar-Dasar Bash Shell

Dasar-Dasar Bash Shell

Selasa, 25 Agustus 2009 01:58 administrator

I. Pendahuluan

Dalam sistem operasi sistem linux, shell mempunyai posisi sebagai perantara antara sistem operasi, dalam hal ini kernel dengan pemakai. Untuk lebih jelasnya, perhatikan gambar di bawah ini:

Page 36: Linux Untuk Pemula

Dari gambar tersebut tampak jelas bahwa shell merupakan jembatan bagi user untuk mengakses kernel. Hardware sebagai perangkat tempat untuk menjalankan sistem operasi hanya dapat diakses oleh kernel linux melalui device driver. Sehingga jika shell akan mengakses hardware, shell harus melalui kernel. Meskipun sebagai interface antara pengguna dan kernel, shell juga tetap menjadi interface aplikasi atau utilitas lainnya terhadap kernel. Dengan posisi seperti itu, penguasaan pengguna linux terhadap shell cukup menentukan dalam menguasai sistem operasi ini.  Dengan shell, dapat dibuat sebuah perintah atau file yang berisi perintah-perintah itu sendiri. Hal lain yang menjadikan shell sangat penting adalah shell menyediakan bahasa pemrograman yang telah disertakan (embedded). Sama halnya dengan bahasa pemrograman tingkat tinggi lainnya, interpreter shell juga menyediakan variabel, flow control, quoting dan fungsi.

II. Macam-macam shell

Pada unix/linux terdapat berbagai macam shell dengan segala kelebihan dan kekurangannya masing-masing. Dengan banyaknya variasi shell ini, user bebas memilih shell yang akan digunakan. Secara ringkas, shell-shell dapat dibuat menjadi tabel seperti di bawah ini:

Fitur sh csh Tcsh ksh Bash

Page 37: Linux Untuk Pemula

Alias Tidak Ya Ya Ya Ya

Command Line Editing Tidak Tidak Ya Ya Ya

Directory Stack Tidak Ya Ya Tidak Ya

Autocomplete Tidak Ya Ya Ya Ya

Fungsi Ya Tidak Tidak Ya Ya

History Tidak Ya Ya Ya Ya

Job Control Tidak Ya Ya Ya Ya

Key Binding Tidak Tidak Ya Tidak Ya

Format Prompt Tidak Tidak Ya Tidak Ya

Koreksi Spelling Tidak Tidak Ya Tidak Ya

Berdasarkan tabel diatas, terlihat bahwa bash masih merupakan shell yang paling banyak memiliki fitur dan cukup sempurna dibanding dengan shell lain.

III. Bash Shell

Sekitar tahun 1983-1990 shell yang paling populer dan banyak digunakan pada lingkungan unix adalah c shell dan bourne shell, hingga dikembangkannya bash. Bash atau Bourne Again SHell merupakan pengembangan dari shell unix sebelumnya, sh yang dibuat oleh steve bourne. Bash kompatibel dengan shell sh yang bersama-sama menggunakan fitur dari ksh dan csh. Bash merupakan perbaikan dari sh untuk mode interaktif dan penggunaan pemrograman bash dikembangkan oleh brian fox dari Free Software Foundation. Shell ini mempunyai lisensi GNU copyleft sehingga bebas digunakan. Saat ini bash semakin berkembang dan banyak dijadikan sebagai shell default untuk sistem operasi linux seperti red hat dan centos. Bash semakin sempurna dengan tambahan fasilitas yang terdapat pada c shell dan korn shell. Pada tutorial kali ini, kita akan mengulas tentang shell yang bernama bash.

IV. Interpreter Bash Shell

Perlu diketahui bahwa bash juga menyediakan bahasa pemrograman dalam hal ini interpreter. Oleh karena interpreter, maka hasil dari program yang dibuat tidak akan dikompilasi, melainkan akan dijalankan secara langsung dengan terlebih dahulu memanggil interpreternya. Untuk itu, sebuah program interpreter hanya bisa dijalankan pada komputer yang didalamnya telah terinstal interpreter yang digunakan. Oleh karena menggunakan interpreter, maka sebuah skrip shell selalu diawali dengan memanggil interpreter yang digunakan untuk membantu interpreter dalam menterjemahkan program yang telah dibuat agar tidak salah. Interpreter yang digunakan oleh Bash adalah sebagai berikut:

#!/bin/bashNamun, bisa saja interpreter untuk bash berbeda-beda di setiap distro. Maka dari itu ketikkan perintah berikut untuk mengetahui dimana file bash itu berada:

Page 38: Linux Untuk Pemula

# whereis bashJika setelah mengetikkan perintah di atas tidak mengeluarkan output, itu berarti di sistem kita belum terinstal bash. Maka dari itu ketikkan perintah:

# yum install bashUntuk menginstall bash di dalam sistem. Karena penulis menggunakan centos 5, maka ketika penulis mengetik perintah diatas, maka ada dua output yaitu /bin/bash dan /usr/share/man/man1/bash.1.gz.  Gunakan file yang berada di direktori /bin sebagai interpreter untuk membuat skrip shell.

V. Membuat Bash Skrip

Buatlah file dengan nama tes.sh lalu ketikkan dalam file tersebut sebagai berikut:

#!/bin/bashecho "Hello World"

kemudian simpan file tersebut. Untuk mengeksekusi file tersebut, gunakan perintah dibawah ini:

# chmod +x tes.sh# ./tes.shUntuk seterusnya, di dalam tutorial ini penulis hanya menuliskan skripnya saja sedangkan nama filenya diserahkan kepada pembaca kecuali jika diberikan di dalam tutorial ini dan untuk menjalankannya gunakan kedua perintah di atas dengan mengganti nama filenya saja. Serta perlu diingat bahwa kita tidak harus menggunakan ekstensi .sh untuk membuat skrip bash. Ekstensi tersebut hanya sebagai penanda bahwa skrip file ini merupakan skrip shell. Kita bisa saja langsung menggunakan nama filenya saja tanpa ekstensi untuk membuat dan menjalankan skrip bash. Untuk menjalankan banyak perintah dalam satu baris gunakan tanda titik koma (;). misalnya seperti contoh berikut:

#!/bin/bashecho -n "Sekarang adalah tanggal:"; date; echo -n "Dan anda sedang menggunakan:";unameDidalam skrip shell, untuk memberi komentar gunakan tanda #. Sehingga baris yang diawali dengan tanda ini tidak akan diproses oleh interpreter.

VI. Variabel pada shell

Variabel adalah sebuah kata yang mempunyai nilai. Sebuah variabel secara umum didefinisikan sebagai berikut:

nama_variabel=isi_variabelUntuk membedakan apakah itu sebuah nama variabel atau tidak di dalam bash shell, sebaiknya etika menulis nama variabel dibuat huruf besar semua dan untuk memberi nilai pada variabel dapat digunakan beberapa cara misalnya isi variabel tersebut harus tidak ada spasi, atau diberi tanda underscore(_), atau kalau mau menggunakan spasi gunakan quoting yang berupa tanda petik ganda (" ") atau tunggal (' '). Untuk mengakses nilai dari variabel, maka pemanggilan nama varibel harus diawali dengan tanda dolar ($). Perhatikan  contoh berikut:

#!/bin/bashOS=LinuxDISTRO=CentosVERSI=5.2echo "Kita akan mempelajari $OS dengan distro $DISTRO versi $VERSI"

Page 39: Linux Untuk Pemula

A. Variabel array pada sellArray adalah tipe data terstruktur yang digunakan untuk menyimpan sejumlah nilai dengan tipe yang sama. Perhatikan contoh berikut:

#!/bin/bashBAB[1]=PengantarBAB[2]=IsiBAB[3]=PenutupBAB[4]=Lampiran# untuk menampilkan nilai dari bab 3echo ${BAB[3]}# untuk menampilkan seluruh nilaiecho ${BAB[*]}

untuk menghapus variabel yang tidak digunakan lagi gunakan perintah unset nama_variabel.

B. Macam-macam variabel1. Variabel LokalYaitu variabel yang ada hanya pada saat masih aktif dan hanya dikenal dilingkungan itu sendiri, sehingga variabel lokal hanya berlaku pada lingkungan dimana variabel tersebut dibuat. Contoh dari variabel ini adalah contoh variabel yang sebelumnya kita buat di atas.

2. Variabel LingkunganYaitu variabel yang terdapat dalam shell dan digunakan dalam proses anak yang dijalankan oleh shell tersebut. Variabel lingkungan ini bisa berupa variabel lokal yang diekspor dan untuk merubahnya menjadi variabel lingkungan menggunakan perintah export. Contohnya adalah mengubah charset lokal menjadi lokal Indonesia

LC_LOCAL=id_ID ; export $KLC_LOCALatau

export LC_LOCAL=id_ID

3. Variabel ShellYaitu variabel yang ditetapkan oleh shell dan digunakan oleh shell agar berjalan dengan baik dan sebenarnya variabel ini bisa dimasukkan dalam kategori variabel lingkungan. Contohnya adalah HOME,PWD,PS1, dan PS2

C. Variabel Dari InputUntuk membaca masukan dari keyboard gunakan perintah read dan diikuti nama variabel. Perhatikan contoh berikut:

#/bin/bashecho "Masukkan namamu: "read namaecho "Masukkan karakter: "read karakterecho "Namamu adalah $nama"echo "Karakter yang telah diketikkan adalah $karakter"

D. Variabel Dari PerintahSebuah variabel dapat diperoleh dari sebuah perintah atau dengan kata lain menjadikan keluaran dari sebuah perintah menjadi variabel. Sintaks yang digunakan adalah sebagai berikut:

Page 40: Linux Untuk Pemula

variabel=`perintah`Perhatikan contoh berikut:

#!/bin/bashFILE=`ls | wc -l`echo "Jumlah file yang ada di direktori ini adalah $FILE"

VII. Quoting Pada Shell

Untuk memunculkan karakter-karakter khusus, umumnya para programmer menggunakan quoting atau escaping yaitu cara yang digunakan untuk mematikan arti dari karakter spesial pada shell. Ada beberapa quoting dalam shell diantaranya:

a. Escape CharacterQuoting dengan cara ini menggunakan backslash. Biasanya karakter ini digunakan jika kita ingin menampilkan banyak perintah dalam satu baris. Perhatikan perintah-perintah berikut ini yang ditulis dalam konsol linux:

# echo saya;kamu# echo saya\;kamu

Pada contoh pertama akan terjadi kesalahan karena shell menganggap bahwa kata kamu yang ditulis merupakan perintah sedangkan di dalam shell tidak ada perintah kamu sehingga menghasilkan kesalahan. Maka dari itu kita menggunakan tanda backslash seperti pada contoh kedua.

b. Single QuotePenggunaannya sama dengan penggunaan tanda backslash, tetapi yang membedakannya yaitu jika menggunakan tanda petik tunggal tanda tersebut hanya cukup diberikan di akhir dan awal dari keseluruhan string yang akan dimunculkan. Perhatikan contoh berikut:

# echo 'tanggal;lahir'

c. Double QuotePenggunaan double quote sama dengan single quote yaitu untuk mematikan makna dari karakter khusus. Perbedaannya adalah jika menggunakan petik tunggal semua string didalamnya tidak akan mempunyai makna lagi sedangkan jika menggunakan petik ganda beberapa karakter khusus tertentu tetap mempunyai makna aslinya. Karakter-karakter tersebut adalah:

$ ` \$ \` \" \\Perhatikan contoh berikut untuk melihat perbedaan di antara keduanya:

# jawab=ya# echo '$jawab'# echo "$jawab"

d. Quoting Untuk ANSI-CKarakter escape backslash yang diikuti dengan string tertentu akan dianggap sebagai karakter ANSI-C, sehingga akibat yang ditimbulkan tentu akan berbeda. Karakter-karakter tersebut biasa digunakan dalam bahsa pemrograman seperti C/C++. Berikut adalah karakter khusus tersebut:

Page 41: Linux Untuk Pemula

Karakter Arti

\a Bell

\b Backspasce

\e Sebuah karakter escape (Bukan ANSI C)

\f Form feed

\n Baris Baru

\r Carriage return

\t Tab Horizontal

\v Tab Vertikal

\\ Backslash

\' Cetak Single Quote

\" Cetak Double Quote

\nnn Cetak karakter ASCII dengan kode oktal

\xnnn Cetak karakter ASCII dengan kode heksadesimal

VIII. Flow Control Dalam Bash

Flow control adalah fasilitas yang digunakan untuk mengontrol alur jalan sebuah perintah. Di dalam bash terdapat dua perintah utama yaitu if dan case.

A. Menggunakan ifPerintah if merupakan perintah built-in yang mensyaratkan kondisi tertentu untuk menjalankan perintah. Format dari if adalah sebagai berikut:

if kondisithen     ekspresifi

Untuk mengecek kesalahan dalam skrip bash ketikkan perintah berikut:

bash -x nama_file

Berikut adalah contoh-contoh dari perintah ifa. perintah if

#!/bin/bash# Skrip ini untuk mengecek apakah sebuah file ada atau tidak ada dalam sistem

Page 42: Linux Untuk Pemula

echo "Masukkan nama file yang akan dicari disertai dengan path yang lengkap: "read FILEecho "Sedang Mengecek..."if [ -f $FILE ]  then    echo "File $FILE ada."fiechoecho "...done."

Eksekusi skrip diatas lalu tuliskan file yang akan dicari misalnya kita ingin file httpd.conf maka kita harus menuliskan file tersebut lengkap dengan pathnya yaitu/etc/httpd/conf/httpd.conf lalu lihat hasilnya.

b. Menggunakan if .. then .. elsePerintah ini sama dengan diatas tetapi dia mempunyai dua pilihan yang berbeda. Perhatikan dua contoh dibawah ini:

Contoh I:

#!/bin/bash# Skrip ini untuk mengecek apakah sebuah file ada atau tidak ada dalam sistem echo "Masukkan nama file beserta ekstensinya: " read FILE echo "Checking..." CARI=`find / -name $FILE` if [ -f $CARI ]   then    echo "File $CARI ada dalam sistem."else        echo "File $CARI tidak ada dalam sistem"fiechoecho "...done."

Contoh II:

#!/bin/bashresult=`ps aux | grep httpd | wc -l`if [ "$result" -gt 100 ]then        service httpd restartelse        echo "Web Server tidak ada gangguan"fic. Menggunakan if .. elifPenggunaan if .. elif digunakan untuk menyatakan if dalam if. dengan bentuk ini, sebuah skrip akan menjadi lebih sederhana. Perhatikan contoh berikut:

#!/bin/bash# Skrip ini akan mengetes apakan tahun yang diinput termasuk tahun kabisatecho -n "Masukkan Tahun: "read TAHUNif [ $[$TAHUN % 400] -eq "0" ]; then  echo "Tahun $TAHUN adalah tahun kabisat dan bulan Februari mempunyai 29 hari"

Page 43: Linux Untuk Pemula

elif [ $[$TAHUN % 4] -eq 0 ]; then        if [ $[$TAHUN % 100] -ne 0 ]; then          echo "Tahun $TAHUN adalah tahun kabisat dan bulan Februari mempunyai 29 hari"        else          echo "Tahun $TAHUN adalah bukan tahun kabisat dan bulan Februari mempunyai 28 hari"        fielse  echo "Tahun $TAHUN adalah bukan tahun kabisat dan bulan Februari mempunyai 28 hari"fi

d. Menggunakan sintaks letif dengan menggunakan sintaks let digunakan untuk kondisi yang menggunakan ekspresi numerik dan operasi aritmetika. Perhatikan contoh berikut:

#!/bin/bashif (($1 < $2))thenecho "Nilai $1 lebih kecil dari nilai $2"elseecho "Nilai $1 lebih besar dari nilai $2"fi

Simpan dengan nama banding. kemudian coba eksekusi dengan cara

# ./banding 43 45# ./banding 45 43

B. Menggunakan casecase adalah perintah lain yang digunakan untuk melakukan flow control. Dalam case nilai akan dibandingkan dengan nilai_1, nilai_2 dan seterusnya hingga ditemukan nilai yang sesuai. Jika nilainya sesuai, perintah yang terletak sesudah nilai_n akan dijalankan hingga ditemukan tanda double semicolon (;;) yang berarti proses akan diteruskan ke perintah setelah kata esac. Jika nilai_n tidak ditemukan, case akan menjalankan perintah setelah tanda asterik kurung tutup [*)]. Formatnya adalah sebagai berikut:

case variabel innilai_1)perintah ;;nilai_2)perintah;;esac

perhatikan contoh berikut:

#!/bin/bash#skrip ini untuk memberikan perintah pada webserverecho "Perintah untuk Webserver"echo "1. Status webserver"echo "2. Matikan webserver"echo "3. Nyalakan webserver"

Page 44: Linux Untuk Pemula

echo "4. Restart webserver"echo -n "Masukkan Pilihan: "read PILIHANcase $PILIHAN in1)service httpd status ;;2)service httpd stop ;;3)service httpd start ;;4)service httpd restart ;;*) echo "Salah masukkan Angka dan Keluar dari program";;esac

IX. Looping dalam Bash

Perintah looping atau pengulangan digunakan untuk menjalankan perintah sampai kondisinya terpenuhi. Berikut adalah perintah-perintah pengulangan:1. forPerintah ini digunakan untuk melakukan berdasarkan sejumlah kondisi yang berupa item-item. Jika item-item yang digunakan telah habis maka dengan sendirinya pengulangan akan berakhir. Formatnya adalah sebagai berikut:

for variabel in item1 item2 ... itemndo    perintahdone

Perhatikan contoh dibawah ini:

#!/bin/bashfor os in windows linux unixdo        echo "$os adalan nama sistem operasi komputer"done

2. WhileFormat yang digunakan adalah :

while kondisido    perintahdone

Perintah while akan terus mengeksekusi perintah jika hasil dari kondisi bernilai benar. Jika kondisinya salah, maka pengulangan akan diakhiri. Perhatikan contoh berikut:

#!/bin/bashwhile [[ $jawab != [YyTt] ]]doecho -n "Jawaban [Y/T]:"read jawabdone

Page 45: Linux Untuk Pemula

echo "Jawaban anda adalah $jawab"

Skrip di atas akan terus mengulang jika kita mengetik selain huruf Y, y, T, dan t. Namun jika kita mengetik salah satu dari keempat huruf itu, maka pengulangan akan diakhiri.

3. UntilPerintah until sama dengan perintah while hanya saja pemeriksaan kondisi pada until dilakukan di belakang setelah perintah dalam do dan done. Formatnya adalah sebagai berikut:

until kondisido    perintahdone

Perhatikan contoh berikut:

#!/bin/bashuntil who | grep dadodosleep 2echo "dado belum login"doneecho "dado sudah login"

Jika kita mengeksekusi skrip ini, maka skrip ini tidak akan berhenti sampai user yang dimaksud (dado) login ke dalam sistem.

4. Selectselect adalah perintah looping yang sering digunakan untuk membuat sejumlah menu pilihan. Dengan menggunakan perintah select, prompt yang digunakan untuk memilih adalah PS3 yang secara default bentuknya adalah #?. Formatnya adalah perintah sebagai berikut:

select variabel in item_1 item_2 ... item_ndo    perintahdone

Perhatikan contoh berikut ini:

#!/bin/bashselect perintah in ls pwd date whodo$perintahdone

Jalankan skrip tersebut, maka kita akan disodori daftar perintah-perintah yang harus kita pilih dan itu akan terus berulang. Jika kita ingin perulangan itu berhenti bisa tekan Ctrl+C. Jika kita ingin mengganti #? menjadi bentuk yang lebih elegan, maka masukkan skrip dibawah ini dan letakkan di dalam file yang sama dibawah kalimat #!/bin/bash:

PS3="Pilihan Anda ?"

Perintah pada LoopingDalam kondisi tertentu, sebuah looping dapat digabungkan dengan perintah lain. Maksud penggabungan itu adalah untuk memberikan kontrol terhadap looping.

Page 46: Linux Untuk Pemula

1. Perintah shiftshift adalah parameter yang digunakan untuk menggeser posisi parameter ke kiri. Jika shift dijalankan tanpa argumen, penggeseran akan tetap dilakukan dengan mengurangi per satu parameter. Argumen yang dapat diberikan adalah n, dengan nilai n berupa bilangan bulat. Formatnya adalahshift n

Perhatikan contoh berikut:

#!/bin/bashwhile (($# > 0))doecho $*shift 1done

Jalankan perintah berikut dengan cara, misalnya:

# ./shift 1 2 3 4 5 6dan lihat hasilnya.

2. Perintah BreakBreak merupakan perintah yang digunakan untuk menghentikan looping dengan paksa. Jika sebuah looping menemukan perintah break maka eksekusi akan dilanjutkan ke perintah setelah done.

Perhatikan skrip berikut:

#!/bin/bashi=0while :doecho -n "$i"let i+=1if (($i >= 50 ))thenbreakfidoneecho " "

Skrip diatas akan berhenti pada saat angka ke 49.

3. Perintah ContinueContinue merupakan printah untuk mengarahkan looping kembali ke atas dimana looping dijalankan, Dengan adanya perintah continue, perintah setelah continue tidak akan diproses (diabaikan). Perhatikan contoh berikut:

#!/bin/bashfor nama in dado ella olga dwidoif [[ $nama == dado ]]thencontinueelseecho "hallo $nama"

Page 47: Linux Untuk Pemula

fidone

Output dari program di atas akan menampilkan string yang diikuti oleh variabel, tetapi ketika bertemu kondisi nama==dado, looping akan kembali ke atas dan dilanjutkan tanpa menjalankan perintah setelahnya. sehingga arief tidak akan ditampilkan oleh program tersebut.

X. Fungsi

Fungsi adalah nama untuk beberapa perintah yang dikelompokkan dan bash menyediakan fasilitas ini. Dengan adanya fasilitas ini, pembuatan program bisa lebih efisien karena dapat mengurangi pengulangan scrip untuk perintah yang yang dipanggil berkali-kali. Ada 2 format yang digunakan untuk membuat fungsi yaitu:

function nama_fungsi {perintah...}

atau

nama_fungsi (){perintah...}

Untuk memanggil fungsi yang telah dibuat, ketikkan nama fungsi tersebut. Namun, pemanggilan harus di bawah fungsi yang dipanggil karena jika dipanggil sebelum fungsi dibuat, fungsi tidak akan dikenal dan perintah pemanggilan fungsi akan dianggap salah.

Perhatikan contoh berikut:

#!/bin/bashpil (){echo "1. Input Data"echo "2. Baca Data"echo "3. Keluar"echo -n "Masukkan Pilihan Anda [1/3]: ";read pilihancase $pilihan in1) masukan;;2) baca;;3) exit;;*) echo "Pilihan Salah, Silahkan Pilih lagi"; pil #memanggil diri sendiriesac}masukan () {echo "Masukkan data Anda: "echo -n "Nama   : ";read namaecho -n "Alamat : ";read alamatecho -n "Email  : ";read emailpil}

Page 48: Linux Untuk Pemula

baca (){echo "****************************************"echo "$nama     $alamat                 $email"echo "****************************************"pil}pil

A. Argumen fungsiDalam sebuah fungsi juga dikenal dengan adanya argumen. Argumen digunakan dalam pemanggilan fungsi. Cara pemanggilan dan pengenalan parameter sama dengan cara yang dilakukan pada shell script. Parameter $0 merupakan parameter untuk nama fungsi yang diikuti oleh $1 ... $n sebagai parameter argumen.

Perhatikan contoh berikut:

#!/bin/bashjumlah() {echo $(($1 + $2))}

if [[ $1 == "" ]] || [[ $2 == "" ]] || [[ $3 != "" ]]thenecho "Gunakan : $0 arg1 arg2"elsejumlah $1 $2fi

Jalankan eksekusi skrip tersebut dengan cara:

# ./arg 34 67Namun jika kita hanya menulis

# ./argMaka akan ada pemberitahuan tentang bagaimana cara menulis eksekusi skrip yang benar.

B. Variabel Lokal FungsiSebuah variabel yang dideklarasikan dalam shell skrip akan menjadi variabel global script tersebut, meskipun itu adalah variabel yang dideklarasikan dalam fungsi. Jadi variabel yang dideklarasikan dalam fungsi pun dapat digunakan oleh pemanggilanya atau fungsi lain. Ketika scrip menemukan deklarasi variabel yang sama, variabel yang akan digunakan adalah variabel tersebut. Untuk lebih jelasnya perhatikan contoh berikut:

#!/bin/bashjml() {isi="centos"echo $isi}jmlecho $isi

Page 49: Linux Untuk Pemula

Jalankan script tersebut dan lihat hasilnya. Terlihat bahwa output centos yang kedua merupakan hasil dari pengambilan fungsi di atas. Untuk mencegah variabel yang dideklarasikan pada fungsi menjadi variabel global perlu digunakan perintah lokal. Dengan penggunaan lokal, variabel lokal tidak akan dapat dipanggil dari luar fungsi yang mendeklarasikannya. Perhatikan contoh berikut:

#!/bin/bashjml() {local isiisi="centos"echo $isi}jmlecho $isi

Jalankan script tersebut dan lihat hasilnya. Terlihat bahwa hanya ada satu output centos karena ada penggunaan local seperti terlihat pada skrip di atas.

C. Menghapus FungsiUntuk menghapus sebuah fungsi pada skrip shell dapat digunakan perintah unset dengan opsi -f. Format yang digunakan sebagai berikut:

unset -f nama_fungsiperhatikan contoh berikut:

#!/bin/bashjml() {isi="centos"echo $isi}jmlunset -f jmljml

Jalankan skrip tersebut dan lihat hasilnya. Terlihat bahwa setelah baris unset -f jml dijalankan, jml bukan lagi sebuah fungsi sehingga linux menganggap bahwa jml merupakan salah satu commandnya tetapi ternyata command jml tidak ada di linux sehingga linux memberikan output error.

XI. Librari

Librari adalah fungsi dalam sebuah file yang dapat digunakan oleh beberapa file. Sebuah librari biasanya tidak mempunyai program utama, tetapi hanya berisi fungsi. Program utama skrip diletakkan pada program yang menggunakan librari tersebut. Perbedaan librari dengan skrip adalah skrip shell bisa berisi fungsi dan program utama, sedangkan librari hanya berisi fungsi tanpa program utama. Pada sebuah skrip shell yang mengandung fungsi biasanya fungsi itu hanya akan digunakan oleh scrip itu sendiri. Dengan memanfaatkan library, programmer cukup membuat sebuah library yang berisi fungsi yang kaan dipanggil oleh beberapa shell skrip. Kemudian jika ada shell skrip yang membutuhkan, file tersebut cukup memanggilnya. 

Membuat dan memanggil libraryUntuk membuat library sama halnya dengan membuat shel skrip biasa namun tanpa mempunyai program utama. Misal kita ingin membuat library yang akan menampilkan pesan kesalahan jika program yang dijalankan tidak mempunyai parameter, seperti skrip berikut:

Page 50: Linux Untuk Pemula

#!/bin/bashsalah(){echo "Gunakan Perintah : $0 argumen"}

Untuk memanggil library, digunakan perintah titik (.) yang diikuti dengan nama file librarinya. Namun harus diingat bahwa tanda titik dan nama filenya harus dipisahkan dengan tanda spasi. Dan juga untuk menghindari kesalahan di dalam pemanggilan library, maka sebaiknya ditulis juga path dimana file tersebut berada. Misalnya file library diatas di tulis di direktory root, dan kita ingin menggunakan file tersebut maka di dalam skrip ditulis sebagai berikut:

. /root/salahPerhatikan contoh di bawah ini dengan membuat file skrip:

#!/bin/bash. /root/salahif [[ $1 == "" ]]thensalahelseecho "Hello $1"fi

Jalankan skrip tersebut sebagai berikut:

# ./skripDan lihat hasilnya. Bandingkan dengan kalau kita menjalankan sebagai berikut:

# ./skrip awang

XII. Operasi String

Operasi string yang dimaksud adalah manipulasi terhadap string yang dilakukan menggunakan variabel. Proses operasi dilakukan dengan memberikan ekspresi ke variabel-variabel tersebut menggunakan expr atau parameter.

A. Panjang stringPanjang sebuah string dapat dilihat dengan format berikut:

expr length $stringcontoh:

#!/bin/bashstring=12345abcdeexpr length $string

B. Index StringIndex digunakan untuk melihat posisi karakter pertama $substring pada $string. Formatnya adalah:

expr index $string $substringcontoh

#!/bin/bash

Page 51: Linux Untuk Pemula

string=1234567abcdefecho `expr index "$string" 0`echo `expr index "$string" 1`echo `expr index "$string" c`

C. Memotong StringPemotongan string secara default dilakukan pada posisi tertentu dari awal string. Pemotongan juga dapat dimulai dari posisi tertentu hingga jumlah karakter yang ditentukan. Formatnya sebagai berikut:

${string:posisi}contoh:

#!/bin/bashstring=1234567abcdef1234567echo $stringecho ${string:0}echo ${string:4}echo ${string:8:4}

D. Menghapus stringJika pemotongan string menggunakan parameter jumlah karakter, penghapusan string menggunakan parameter karakter itu sendiri. Formatnya adalah:

${string#substring}${string##substring}${string%substring}${string%%substring}

Perhatikan contoh berikut:

#!/bin/bashstring=abcdefgABCDEFGabcABC123456789# menghapus string a sampai B terdekat diambil dari awalecho ${string#a*B}# menghapus string a sampai B terjauh diambil dari awalecho ${string##a*B}# menghapus string B sampai 9 terdekat diambil dari akhirecho ${string%B*9}# menghapus string B sampai 9 terdekat diambil dari akhirecho ${string%%B*9}

E. Penggantian StringPenggantian string digunakan untuk mengganti $substring dengan $substring pengganti. Format yang digunakan adalah:

${string/substring/substring2}${string//substring/substring2}${string/#substring/substring2}${string/%substring/substring2}

contoh:

Page 52: Linux Untuk Pemula

#!/bin/bashstring=abcABCabcABC123456789# mengganti string abc pertama yang ditemukan dengan 987echo ${string/abc/987}# mengganti semua string abc dengan 987echo ${string//abc/987}# menyisipkan string xyz di awal stringecho ${string/#/xyz}# mengganti string yabg diawali dengan abc dengan 123echo ${string/#abc/123}# Mengganti string yang diakhiri dengan 6789 dengan wxyzecho ${string/%6789/wxyz}

XIII. Operasi Bilangan

Sebenarnya nilai variabel pada Bash akan mempunyai tipe string, baik numerik maupun string. Oleh karena angka pun dianggap sebagai string, maka untuk melakukan operasi aritmetika, angka tersebut harus diekspresikan menjadi benar-benar numerik. Sintaksnya adalah sebagai berikut:

expr integer operator integercontoh:

#!/bin/bashif [[ $1 = "" ]] || [[ $2 = "" ]]thenecho "masukkan angka yang akan dikalikan"elsekali=`expr $1 \* $2`echo "Hasil Perkalian : $kali"fi

LetLet dapat digunakan untuk melakukan operator aritmatika dengan tipe integer. Hasil dari perintah let akan dijadikan ke sebuah variabel. Formatnya sebagai berikut:

let ekspresiContohnya:

#!/bin/bashlet x=202%5echo $x

Referensi:

Bash Scripting Untuk Administrasi Sistem Linux, Rofiq YuliardiBash Guide For Beginners, Machtelt Garrelshttp://www.linuxconfig.org/

Page 53: Linux Untuk Pemula

4 Ramadhan 1430 H25 Agustus 2009 M

+ 2

+ 2

CommentsAdd New

Search

hermanwhyd - blog of it and computer |202.70.50.xxx |2009-10-29 22:48:04

thank y tutorialNya,,,ini sngat mmbntu,,,

Quote 0 0

catatan |SAdministrator |2009-11-04 13:27:20

Terima Kasih

Quote 0 0

dendy - TQ |110.138.75.xxx |2009-12-21 08:47:17

makasi ya..btw buatnya pake joomla ya mas?

Quote 1 0

catatan |SAdministrator |2009-12-21 11:16:11

Maksudnya buat situs ini? Iya, saya pakai joomla

Quote 0 0

adhown - makasih ni ilmunya,.. |61.247.52.xxx |2010-07-09 14:02:30

makasih ya.. mudah dimengerti dan bermanfaat.

Quote 0 0

catatan |SAdministrator |2010-07-12 09:49:25

Alhamdulillah.Terima Kasih.

Page 54: Linux Untuk Pemula

Quote 0 0

Opan - hoho... |114.79.55.xxx |2010-10-16 01:59:51

kren bro....thxk ya!!

Quote 0 0

catatan |SAdministrator |2010-10-19 13:39:28

Sama-sama

Quote 0 0

Write comment

Name:

Email:

Website:

Title:

UBBCode:

Page 55: Linux Untuk Pemula

Please input the anti-spam code that you can read in the image.

Powered by !JoomlaComment 3.26

Terakhir Diperbaharui ( Sabtu, 10 September 2011 07:44 )

Tanggal dan Jam

Kamis, 23 Sya'ban 1433 H12 Juli 2012

Ulti Clocks, an Ulti Joomla product - Joomla Extensions | Joomla Templates | Joomla Articles

Browse this website in:

Mutiara Hari Ini

Pedagang yang jujur lagi terpercaya akan bersama para Nabi, kaum shiddiq dan para syuhada (HR. Hakim)

Poling

Apakah artikel-artikel di situs ini bermanfaat untuk anda?

(296 votes)

Tidak

7.8%

Ya

92.2%

Page 56: Linux Untuk Pemula

Joomulus

Waktu Shalat

Tentang Situs Peta Situs

Copyright © 2012 catatanlepas.com. All Rights Reserved. Designed by JoomlArt.com.