catatanlepas.com

  • Increase font size
  • Default font size
  • Decrease font size
  • default color
  • black color
Home Komputer Pemrograman Dasar-Dasar Bash Shell

Dasar-Dasar Bash Shell

Email Cetak PDF

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:

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
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/bash
Namun, bisa saja interpreter untuk bash berbeda-beda di setiap distro. Maka dari itu ketikkan perintah berikut untuk mengetahui dimana file bash itu berada:
# whereis bash
Jika setelah mengetikkan perintah di atas tidak mengeluarkan output, itu berarti di sistem kita belum terinstal bash. Maka dari itu ketikkan perintah:
# yum install bash
Untuk 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/bash
echo "Hello World"

kemudian simpan file tersebut. Untuk mengeksekusi file tersebut, gunakan perintah dibawah ini:
# chmod +x tes.sh
# ./tes.sh
Untuk 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/bash
echo -n "Sekarang adalah tanggal:"; date; echo -n "Dan anda sedang menggunakan:";uname
Didalam 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_variabel
Untuk 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/bash
OS=Linux
DISTRO=Centos
VERSI=5.2
echo "Kita akan mempelajari $OS dengan distro $DISTRO versi $VERSI"

A. Variabel array pada sell
Array adalah tipe data terstruktur yang digunakan untuk menyimpan sejumlah nilai dengan tipe yang sama. Perhatikan contoh berikut:
#!/bin/bash
BAB[1]=Pengantar
BAB[2]=Isi
BAB[3]=Penutup
BAB[4]=Lampiran
# untuk menampilkan nilai dari bab 3
echo ${BAB[3]}
# untuk menampilkan seluruh nilai
echo ${BAB[*]}

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

B. Macam-macam variabel
1. Variabel Lokal
Yaitu 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 Lingkungan
Yaitu 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_LOCAL
atau
export LC_LOCAL=id_ID

3. Variabel Shell
Yaitu 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 Input
Untuk membaca masukan dari keyboard gunakan perintah read dan diikuti nama variabel. Perhatikan contoh berikut:
#/bin/bash
echo "Masukkan namamu: "
read nama
echo "Masukkan karakter: "
read karakter
echo "Namamu adalah $nama"
echo "Karakter yang telah diketikkan adalah $karakter"

D. Variabel Dari Perintah
Sebuah variabel dapat diperoleh dari sebuah perintah atau dengan kata lain menjadikan keluaran dari sebuah perintah menjadi variabel. Sintaks yang digunakan adalah sebagai berikut:
variabel=`perintah`
Perhatikan contoh berikut:
#!/bin/bash
FILE=`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 Character
Quoting 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 Quote
Penggunaannya 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 Quote
Penggunaan 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-C
Karakter 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:

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 if
Perintah if merupakan perintah built-in yang mensyaratkan kondisi tertentu untuk menjalankan perintah. Format dari if adalah sebagai berikut:
if kondisi
then
     ekspresi
fi

Untuk mengecek kesalahan dalam skrip bash ketikkan perintah berikut:
 bash -x nama_file

Berikut adalah contoh-contoh dari perintah if
a. perintah if
#!/bin/bash
# Skrip ini untuk mengecek apakah sebuah file ada atau tidak ada dalam sistem
echo "Masukkan nama file yang akan dicari disertai dengan path yang lengkap: "
read FILE
echo "Sedang Mengecek..."
if [ -f $FILE ]
  then
    echo "File $FILE ada."
fi
echo
echo "...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 .. else
Perintah 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"
fi
echo
echo "...done."

Contoh II:
#!/bin/bash
result=`ps aux | grep httpd | wc -l`
if [ "$result" -gt 100 ]
then
        service httpd restart
else
        echo "Web Server tidak ada gangguan"
fi
c. Menggunakan if .. elif
Penggunaan 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 kabisat
echo -n "Masukkan Tahun: "
read TAHUN
if [ $[$TAHUN % 400] -eq "0" ]; then
  echo "Tahun $TAHUN adalah tahun kabisat dan bulan Februari mempunyai 29 hari"
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"
        fi
else
  echo "Tahun $TAHUN adalah bukan tahun kabisat dan bulan Februari mempunyai 28 hari"
fi


d. Menggunakan sintaks let
if dengan menggunakan sintaks let digunakan untuk kondisi yang menggunakan ekspresi numerik dan operasi aritmetika. Perhatikan contoh berikut:
#!/bin/bash
if (($1 < $2))
then
echo "Nilai $1 lebih kecil dari nilai $2"
else
echo "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 case
case 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 in
nilai_1)
perintah ;;
nilai_2)
perintah;;
esac

perhatikan contoh berikut:

#!/bin/bash
#skrip ini untuk memberikan perintah pada webserver
echo "Perintah untuk Webserver"
echo "1. Status webserver"
echo "2. Matikan webserver"
echo "3. Nyalakan webserver"
echo "4. Restart webserver"
echo -n "Masukkan Pilihan: "
read PILIHAN
case $PILIHAN in
1)
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. for
Perintah 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 ... itemn
do
    perintah
done

Perhatikan contoh dibawah ini:

#!/bin/bash
for os in windows linux unix
do
        echo "$os adalan nama sistem operasi komputer"
done

2. While
Format yang digunakan adalah :
while kondisi
do
    perintah
done

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

#!/bin/bash
while [[ $jawab != [YyTt] ]]
do
echo -n "Jawaban [Y/T]:"
read jawab
done
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. Until
Perintah 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 kondisi
do
    perintah
done

Perhatikan contoh berikut:
#!/bin/bash
until who | grep dado
do
sleep 2
echo "dado belum login"
done
echo "dado sudah login"

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

4. Select
select 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_n
do
    perintah
done

Perhatikan contoh berikut ini:
#!/bin/bash
select perintah in ls pwd date who
do
$perintah
done

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 Looping
Dalam kondisi tertentu, sebuah looping dapat digabungkan dengan perintah lain. Maksud penggabungan itu adalah untuk memberikan kontrol terhadap looping.

1. Perintah shift
shift 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 adalah
shift n

Perhatikan contoh berikut:
#!/bin/bash
while (($# > 0))
do
echo $*
shift 1
done

Jalankan perintah berikut dengan cara, misalnya:
 # ./shift 1 2 3 4 5 6
dan lihat hasilnya.

2. Perintah Break
Break 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/bash
i=0
while :
do
echo -n "$i"
let i+=1
if (($i >= 50 ))
then
break
fi
done
echo " "

Skrip diatas akan berhenti pada saat angka ke 49.

3. Perintah Continue
Continue 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/bash
for nama in dado ella olga dwi
do
if [[ $nama == dado ]]
then
continue
else
echo "hallo $nama"
fi
done

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/bash
pil ()
{
echo "1. Input Data"
echo "2. Baca Data"
echo "3. Keluar"
echo -n "Masukkan Pilihan Anda [1/3]: ";read pilihan
case $pilihan in
1) masukan;;
2) baca;;
3) exit;;
*) echo "Pilihan Salah, Silahkan Pilih lagi"; pil #memanggil diri sendiri
esac
}
masukan () {
echo "Masukkan data Anda: "
echo -n "Nama   : ";read nama
echo -n "Alamat : ";read alamat
echo -n "Email  : ";read email
pil
}

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


A. Argumen fungsi
Dalam 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/bash
jumlah() {
echo $(($1 + $2))
}

if [[ $1 == "" ]] || [[ $2 == "" ]] || [[ $3 != "" ]]
then
echo "Gunakan : $0 arg1 arg2"
else
jumlah $1 $2
fi

Jalankan eksekusi skrip tersebut dengan cara:
 # ./arg 34 67
Namun jika kita hanya menulis
 # ./arg
Maka akan ada pemberitahuan tentang bagaimana cara menulis eksekusi skrip yang benar.

B. Variabel Lokal Fungsi
Sebuah 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/bash
jml() {
isi="centos"
echo $isi
}
jml
echo $isi

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/bash
jml() {
local isi
isi="centos"
echo $isi
}
jml
echo $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 Fungsi
Untuk menghapus sebuah fungsi pada skrip shell dapat digunakan perintah unset dengan opsi -f. Format yang digunakan sebagai berikut:
unset -f nama_fungsi
perhatikan contoh berikut:

#!/bin/bash
jml() {
isi="centos"
echo $isi
}
jml
unset -f jml
jml

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 library
Untuk 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:
#!/bin/bash
salah()
{
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/salah
Perhatikan contoh di bawah ini dengan membuat file skrip:

#!/bin/bash
. /root/salah
if [[ $1 == "" ]]
then
salah
else
echo "Hello $1"
fi

Jalankan skrip tersebut sebagai berikut:
# ./skrip
Dan 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 string
Panjang sebuah string dapat dilihat dengan format berikut:
expr length $string
contoh:

#!/bin/bash
string=12345abcde
expr length $string

B. Index String
Index digunakan untuk melihat posisi karakter pertama $substring pada $string. Formatnya adalah:
expr index $string $substring
contoh
#!/bin/bash
string=1234567abcdef
echo `expr index "$string" 0`
echo `expr index "$string" 1`
echo `expr index "$string" c`

C. Memotong String
Pemotongan 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/bash
string=1234567abcdef1234567
echo $string
echo ${string:0}
echo ${string:4}
echo ${string:8:4}

D. Menghapus string
Jika 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/bash
string=abcdefgABCDEFGabcABC123456789
# menghapus string a sampai B terdekat diambil dari awal
echo ${string#a*B}
# menghapus string a sampai B terjauh diambil dari awal
echo ${string##a*B}
# menghapus string B sampai 9 terdekat diambil dari akhir
echo ${string%B*9}
# menghapus string B sampai 9 terdekat diambil dari akhir
echo ${string%%B*9}

E. Penggantian String
Penggantian 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:
#!/bin/bash
string=abcABCabcABC123456789
# mengganti string abc pertama yang ditemukan dengan 987
echo ${string/abc/987}
# mengganti semua string abc dengan 987
echo ${string//abc/987}
# menyisipkan string xyz di awal string
echo ${string/#/xyz}
# mengganti string yabg diawali dengan abc dengan 123
echo ${string/#abc/123}
# Mengganti string yang diakhiri dengan 6789 dengan wxyz
echo ${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 integer
contoh:
#!/bin/bash
if [[ $1 = "" ]] || [[ $2 = "" ]]
then
echo "masukkan angka yang akan dikalikan"
else
kali=`expr $1 \* $2`
echo "Hasil Perkalian : $kali"
fi

Let
Let dapat digunakan untuk melakukan operator aritmatika dengan tipe integer. Hasil dari perintah let akan dijadikan ke sebuah variabel. Formatnya sebagai berikut:
let ekspresi
Contohnya:
#!/bin/bash
let x=202%5
echo $x

Referensi:

Bash Scripting Untuk Administrasi Sistem Linux, Rofiq Yuliardi
Bash Guide For Beginners, Machtelt Garrels
http://www.linuxconfig.org/
    

4 Ramadhan 1430 H
25 Agustus 2009 M

+ 2
+ 2
Comments
Add New Search
hermanwhyd  - blog of it and computer     |202.70.50.xxx |2009-10-29 22:48:04
thank y tutorialNya,,,
ini sngat mmbntu,,,
catatan   |SAdministrator |2009-11-04 13:27:20
Terima Kasih
dendy  - TQ     |110.138.75.xxx |2009-12-21 08:47:17
makasi ya..btw buatnya pake joomla ya mas?
catatan   |SAdministrator |2009-12-21 11:16:11
Maksudnya buat situs ini? Iya, saya pakai joomla
adhown  - makasih ni ilmunya,..   |61.247.52.xxx |2010-07-09 14:02:30
makasih ya.. mudah dimengerti dan bermanfaat.
catatan   |SAdministrator |2010-07-12 09:49:25
Alhamdulillah.
Terima Kasih.
Opan  - hoho...   |114.79.55.xxx |2010-10-16 01:59:51


kren bro....
thxk ya!!
catatan   |SAdministrator |2010-10-19 13:39:28
Sama-sama
Write comment
Name:
Email:
 
Website:
Title:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

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

Tanggal dan Jam


Ulti Clocks content

Browse this website in:


Mutiara Hari Ini

Barangsiapa yang lupa bahwa ia sedang berpuasa, lalu ia makan atau minum, maka hendaklah ia menyempurnakan puasanya (HR. Muslim)

Poling

Apakah artikel-artikel di situs ini bermanfaat untuk anda?

(283 votes)

7.8%
92.2%

Waktu Shalat