Shell
Programming
A.
Pemrograman
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 di inginkan 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. Perintah-peritah
yang diketikkan oleh user dari input standart yaitu keyboard akan ditafsirkan
oleh shell, jika yang diketikkan oleh user merupakan program yang dapat di
eksekusi maka shell akan menjalankan program tersebut. Untuk melihat jenis Shell apa saja yang ada
dalam sebuah system operasi Linux dapat dialkukan dengan menuliskan perintah
berikut :
$
ls /etc/shells <enter>
Shell
apa yang sedang aktif saat ini, dapat digunakan perintah berikut:
$
echo $shell <enter>
B.
Dasar-dasar
Shell Programming
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,...
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
C.
Variabel
pada Shell
I.
Variabel
Lokal
Yang dimaksud dengan variabel lokal
adalah variabel yang nilainya langsung diisikan. Di dalam memberikan nama
sebuah varibel, yang harus diperhatikan adalah nama variabel berupa karakter alphanumeric
atau bisa juga diawali dengan karakater garisbawah(_), setelah itu baru bisa
diikuti dengan jenis karakter yang lain. Dalam pemrograman Shell untuk
mendefinisikan sebuah variable tidak perlu diberikan bentuk atau jenis variabel
tersebut, tidak seperti di pemrograman C atau Pascal dimana variabel yang akan
dibuat perlu didefinisikan terlebih dahulu tipenya, Dan di dalam lingkup Shell
tipe variabel hanya ada satu jenis yaitu tipe string. Contoh dalam penulisan
variabel dan pemberian nilai dalam potongan program Shell sebagai berikut :
nama=kiki
nim=201281044
fakultas="ilmu
komputer"
jurusan=“teknik
informatika”
echo
$nama
echo
$nim
echo
$fakultas
echo
$jurusan
Keterangan:
Tanda
‘$’ memiliki makna sebagai pengarah bahwa kata tersbut adalah sebuah variabel
yang memiliki nilai. Kalau isi mengandung spasi, harus di dalam tanda petik
" ".
Setelah
tanda sama dengan ("=") , jangan menggunakan spasi.
Contoh:
nama=kiki
(penulisan yang benar)
nama=
kiki(penulisan yang salah)
jurusan=teknik
informatika (penulisan salah karena mengandung spasi)
status="teknik
informatika" (penulisan yang benar)
II.
Variabel
Environment
Environment variabel adalah variabel
yang merupakan bawaan dari Shell itu sendiri, biasanya variabel ini berisi
nilai-nilai yang merupakan konfigurasi standar dalam lingkungan program Shell. Aturan
penulisan dari environment variable adalah semua nama variabel menggunakan
huruf kapital. lingkup dari variabel environment adalah bersifat GLOBAL. Artinya
variabel environment berlaku untuk semua Shell yang ada. Contoh variabel
environment adalah sebagai berikut :
LOGNAME=shell14
(variabel yang berisi nama login)
SHELL=/bin/bash
(variabel yang berisi nama shell yang aktif)
HOME=/home/shell14
(variabel yang berisi nama direktori user)
USER=shell14
(variabel yang berisi nama user)
§ Untuk
mengetahui variabel apa saja yang ada dalam kelompok environment variable dapat
digunakan perintah berikut:
$ env ‘enter’
§ Untuk
merubah nilai dari variabel environment dapat dilakukan dengan menggunakan
perintah sebagai berikut :
$ export LOGNAME=mrbee ‘enter’
§ kemudian
hasilnya dapat dilihat dengan menggunakan perintah :
$ env |
grep “LOGNAME”
§ Variabel
environment juga bisa dihapus atau dihilangkan dari lingkungan daftar variabel
environment dengan menggunakan perintah berikut :
$ unset LOGNAME
D.
Ruang
Lingkup Variabel Dalam Shell
Yang dimaksud dengan ruang lingkup
adalah sejauh mana sebuah variabel yang didefinisikan berlaku bagi program
shell dibuat. Dipemrograman lain seperti C ada variabel lokal yang hanya berlaku
di dalam sebuah file skrip C, ada juga variabel global yang bisa berlaku bagi
skrip C yang lain walaupun berada dalam file lainnya. Di program Shell lingkup
dari sebuah variabel yang didefinisikan berlaku lokal. Lokal yang dimaksud
adalah dalam suatu Shell saja. Jika dalam sebuah Shell dibuat lagi sub-Shell
maka variabel tersebut sudah tidak berlaku nilainya. Sedangkan variabel
environment memiliki lingkup GLOBAL, yang dimaksud dengan global adalah semua
variabel berlaku dan bernilai sama disemua file skrip Shell yang dibuat. Contoh
variabel LOGNAME yang memiliki nilai nama login user, akan mempunya nilai yang
sama walaupun diakses dari file skrip lainnya.
E.
Struktur
Kontrol Pada Shell
I. If-Else
if
instruksi 1
then
instruksi 1.1
instruksi 1.2
elif instruksi 2
then
instruksi 2.1
instruksi 2.2
else
instruksi 3.1
instruksi 3.2
fi
II. Case
case
variable in
match1)
instruksi 1.1
instruksi 1.2
……………………. ;;
Match2)
instruksi 2.1
instruksi 2.2
……………………. ;;
*)
instruksi 3.1
instruksi 3.2
……………………. ;;
esac
III. While
While
kondisi
do
instruksi 1
instruksi 2
done
F.
Array
pada Shell
Pada versi BASH 2.x terdapat fungsi
untuk mendefinisikan array satu dimensi. Array memungkinkan seorang programmer
mengoleksi daftar beberapa nilai dalam sebuah variabel. Untuk mengekstraksi
kembali nilai-nilai tersebut dapat dilakukan dengan menyebutkan nama variabel
yang diikuti oleh nomer indek array tersebut. Pendefinisian sebuah array juga
bias dilakukan on the fly (tanpa mendefinisi terlebih dahulu). Dan tidak ada
batasan maksimum dari sebuah array yang dibuat dalam lingkungan BASH Shell.
Pada saat sebuah nilai diberikan kedalam sebuah array yang telah didefinisikan,
indek array secara otomatis akan dimulai dari 0, dan bertambah naik 1 sampai
semua kumpulan nilai-nilai dimasukkan.
Contoh
deklarasi array :
$
declare –a nomor=(44 98 101)
$
nama=(kiki tika dina)
$
kota=(tangerang jakarta depok)
x[0]=7
x[4]=400
contoh
lain :
$
declare –a nama
$
nama=(kiki abdul tika)
$
echo ${nama[1]}
abdul
$
echo ${nama[2]}
tika
$
echo “haiii teman-temanku ${nama[*]}”
Haiii
teman-temanku kiki abdul tika
$
echo “jumlah total indek array adalah ${#nama[*]}”
jumlah
total indek adalah 3
$
unset nama
Keterangan
:
1.
Mendeklrasikan variabel array “nama”
2.
Memasukkan nilai ke dalam array “nama”
3.
Menampilkan isi dari array indek ke 1
4.
Menampilkan isi dari array indek ke 2
5.
Menampilkan semua isi array “nama”
6.
Menampilkan jumlah indek total dari array “nama”
7.
Menghapus array “nama”
IV.
Manajemen
Input Output
Perintah “Read” merupakan perintah yang
termasuk dalam kelompok buil-in command shell. Perintah ini berfungsi untuk
membaca masukan dari user melalui perantara keyboard. Jika tidak ada opsi maka
perintah ini akan membaca masukan yang diberikan oleh user tanpa memilah-milah terlebih
dahulu. Batas pembacaan masukan adalah ketika mulai baris baru yang ditandai
dengan penekanan tombol ‘enter’ oleh user. Berikut ini adalah format penggunaan
perintah read beserta opsi yang dapat digunakan dalam penulisan skrip BASH
Shell.
Tabel
3.1 Format perintah Read
Format
|
Deskripsi
|
read
jawaban
|
Membaca
satu baris masukan dari standard input dan disubstitusikan ke variabel
jawaban
|
read
awal akhir
|
Membaca
satu baris input dan dipisahkan berdasarkan spasi, masukan pertama
disubtitusikan ke variabel awal, dan masukan kedua disubtitusikan ke variabel
akhir
|
read
|
Membaca
satu baris masukan dan disubtitusikan ke variabel built-in yang bernama
REPLY.
|
read
–a nama_array
|
Membaca
daftar kata dari masukan dan mensubtitusikan ke dalam variabel array
nama_array.
|
read
–e
|
Digunakan
di shell intereraktif
|
read
–p prompt
|
Menampilkan
prompt, menunggun masukan, dan mensubtitusikan masukan ke dalam variable
REPLY
|
read
–r line
|
Memperbolehkan
adanya karakter backslash pada masukan yang diberikan.
|
Contoh
penggunaan perintah read :
#!/bin/bash
#nama
skrip : test
echo
–e “bagaimana kabarmu hari ini ? : ”
read
hasil
echo
“anda menjawab $hasil”
echo
“siapa nama lengkapmu ?”
read
n_awal n_tengah n_akhir
echo
“nama lengkap kamu adalah $n_awal $n_tengah $n_akhir”
echo
“nama awal kamu adalah $n_awal”
output
program adalah :
$./test
bagaimana
kabarmu hari ini ? : baik
anda
menjawab baik
siapa
nama lengkapmu ? kiki risky hidayat
nama
lengkapmu adalah kiki rizky hidayat
nama
awal kamu adalah kiki
G.
Function
Pada Shell
Fungsi adalah program yang dapat
dipanggil oleh program lainnya dengan menggunakan notasi NamaFungsi(). Fungsi
memberikan exit status ($?) yang dinyatakan dengan return nr, atau nilai 0
sebagai default. Membuat fungsi diawali dengan nama fungsi, parameter, kemudian
blok program yang dinyatakan dalam {...}.
Contoh
F1
( ) {
.........
........
return
1
}
Variabel
dapat didefinisikan dalam fungsi sebagai variabel lokal atau global. Hal yang
perlu diperhatikan , nama variable yang digunakan dalam sebuah fungsi, jangan
sampai bentrok dengan nama variabel yang sama di luar fungsi sehingga tidak
terjadi perubahan isi variabel.