Hai! Artikel ini adalah bagian kedua dari seri tutorial pembuatan skrip shell Howtoforge. Saat ini, saya berasumsi bahwa Anda telah membaca bagian pertama dari seri ini dan mengetahui cara membuat skrip sederhana dan menjalankannya. Di bagian kedua, Anda akan mempelajari cara menerima input dari pengguna dan memprosesnya melalui skrip shell. Mari kita mulai!
Variabel di Linux
Sama seperti bahasa pemrograman, shell Linux memiliki kemampuan untuk menyimpan data dalam variabel. Variabel adalah wadah yang menyimpan sementara data yang akan diproses melalui bahasa pemrograman. Ada dua jenis variabel di Linux:variabel lingkungan dan variabel shell.
Variabel Lingkungan
Variabel lingkungan adalah variabel default di Linux dan digunakan untuk meneruskan informasi ke seluruh proses di shell. Variabel lingkungan peka terhadap huruf besar-kecil dan harus selalu menggunakan huruf besar untuk mengaksesnya.
Tabel di bawah menunjukkan variabel lingkungan umum di shell Linux:
Nama variabel | Penggunaan |
BASH | Menampung path lengkap dari interpreter perintah untuk skrip Bash |
BASH_VERSION | Menampung versi rilis bash dari mesin yang saat ini digunakan |
RUMAH | Menampung jalur relatif dari direktori home. |
LOGNAME | Menampung nama akun pengguna saat ini yang masuk |
OSTYPE | Menampung string yang menjelaskan OS saat ini dari mesin yang digunakan |
JALAN | Menampung jalur absolut yang dipisahkan titik dua dari file yang dapat dieksekusi di Linux |
PD | Menampung direktori kerja shell saat ini |
SHELL | Menampung shell baris perintah yang disukai |
USER | Bekerja mirip dengan LOGNAME. Ini memegang nama akun pengguna yang saat ini masuk |
_ | Menyimpan nama perintah yang baru saja digunakan di shell |
Untuk menampilkan nilai variabel lingkungan, pengguna harus menambahkan tanda dolar ($) ke variabel yang akan diakses. Misalnya, untuk menampilkan beberapa informasi sistem seperti direktori kerja saat ini, pengguna yang masuk dan jenis OS menggunakan gema, kami menggunakan:
#!/bin/bash
echo $PWD
echo $LOGNAME
echo $OSTYPE
Hasilnya adalah:
Untuk mendapatkan seluruh daftar variabel lingkungan di Linux gunakan perintah env.
Mengubah nilai variabel lingkungan
Untuk memberikan fleksibilitas sistem, variabel lingkungan ini dapat dimanipulasi. Untuk menetapkan nilai ke variabel lingkungan, gunakan ekspresi penetapan (tanda sama dengan).
Contoh:
#!/bin/bash
echo $USER
USER="new user"
echo $USER
Hasil scriptnya adalah:
Saat Anda menjalankan skrip, pada awalnya, $USER di baris echo $USER menunjukkan nilai variabel USER. Dengan menggunakan operator penugasan (=) variabel USER mengubah nilainya. Namun, jika pengguna akan menetapkan nilai yang tidak diketahui ke variabel lingkungan, shell akan membuat variabel shell lain yang mirip dengan variabel lingkungan dalam konteks skrip lokal tetapi tidak akan memengaruhi perilaku aplikasi lain. Artinya, setelah skrip kita ditutup, variabel USER akan mempertahankan nilai defaultnya.
Perhatikan bahwa dalam contoh sebelumnya, kami menghilangkan tanda dolar ($) dalam nama variabel saat memanipulasi nilai variabel lingkungan seperti baris USER="new user". Juga, saat menggunakan operator penugasan, tidak boleh ada spasi di antara tanda USER dan =. Menambahkan spasi di antara keduanya akan membuat kesalahan.
Variabel Shell
Shell juga memungkinkan pengguna untuk mendeklarasikan variabel. Sama seperti PHP, untuk mendeklarasikan variabel dalam skrip shell, pengguna tidak perlu khawatir untuk mendeklarasikan tipe datanya; interpreter akan secara otomatis mendeteksi tipe data variabel berdasarkan data yang disimpan pengguna ke dalamnya selama runtime.
Aturan dalam penamaan variabel shell
Sama seperti bahasa pemrograman lainnya, ada aturan dalam penamaan variabel shell. Berikut ini ringkasan aturannya:
- Nama variabel harus diawali dengan huruf atau garis bawah.
- Hanya boleh berisi karakter alfanumerok atau garis bawah.
- Variabel peka terhadap huruf besar/kecil sehingga jalur variabel, PATH, dan Jalur berbeda.
Untuk membuktikan aturan ini, kami akan membuat skrip sederhana di bawah ini:
#!/bin/bash
12abc=10
abc#*=10
_abc=10
_ABC=2
echo $12abc $abc#* $_abc $_ABC
Baris 2 dan 3 mengembalikan kesalahan "perintah tidak ditemukan" karena variabel 12abc dimulai dengan karakter numerik dan variabel abc#* berisi karakter ilegal. Kami juga membuktikan bahwa _abc dan _ABC adalah variabel yang berbeda dan garis _ABC=2 tidak menimpa nilai _abc.
Menetapkan nilai ke variabel shell menggunakan perintah baca:
read adalah perintah yang memungkinkan menerima input dari pengguna. Sintaks dalam menggunakan perintah read adalah:
read <variable_name>
Misalnya, kami akan membuat skrip yang memungkinkan pengguna memasukkan nama depan dan belakangnya dan menampilkannya. Untuk memberi tahu pengguna apa yang harus dilakukan, kami menampilkan prompt pengguna dengan perintah echo.
#!/bin/bash
echo "Your first name: "
read fname
echo "Your last name:"
read lname
echo "Hello $fname $lname ! I am learning how to create shell scripts."
Hasilnya adalah:
Harap perhatikan bahwa seperti pada contoh sebelumnya, kami tidak harus mendeklarasikan variabel untuk menggunakannya. Interpreter juga secara otomatis membuat variabel yang digunakan dalam perintah read. Namun, dalam contoh, kami berulang kali menggunakan perintah echo untuk membuat prompt kepada pengguna. Perintah read juga memiliki kemampuan untuk membuat prompt saat menerima input pengguna. Sintaks penggunaan prompt dalam perintah read adalah:
read -p "Your prompt: " <variable_name>
Untuk menyederhanakan kode kita sebelumnya, kita dapat merekonstruksi kode menjadi:
#!/bin/bash
read -p "Your first name: " fname
read -p "Your last name: " lname
echo "Hello $fname $lname ! I am learning how to create shell scripts"
Manfaat lain dari perintah read adalah bahwa command prompt berada tepat setelah teks dan bukan baris di bawahnya.
Perintah read juga dapat digunakan untuk menerima password. Tidak seperti input biasa, kata sandi ditutup untuk memberikan keamanan. Sintaks dalam menerima password adalah:
read -s -p "your prompt" <variable_name>
Melakukan aritmatika sederhana menggunakan shell
Selain menerima input dan menampilkan output, bash shell juga memiliki opsi aritmatika bawaan. Tabel di bawah ini merangkum operator aritmatika bawaan dari shell Bash.
Operator | Deskripsi | Sintaks | Penggunaan |
+ | Penambahan | a=$((b+c)) | Menambahkan nilai b dan c dan menyimpannya ke variabel a |
- | Pengurangan | a=$((b-c)) | Kurangi nilai c dari b dan simpan ke variabel a |
* | Perkalian | a=$((b*c)) | Mengkalikan nilai b dan c dan menyimpannya ke variabel a |
/ | Divisi | a=$((b/c)) | Membagi nilai b dengan c dan menyimpannya ke variabel a |
% | Modulus | a=$((b%c)) | Melakukan pembagian modulo b dan c dan menyimpannya ke variabel a |
++ | Pra-kenaikan | $((++aa)) | Menambah nilai variabel a segera |
++ | Pasca-kenaikan | $((a++)) | Menambahkan nilai variabel a dan mencerminkan perubahan ke baris berikutnya |
-- | Pra-pengurangan | $((--a)) | Menurunkan nilai variabel a dengan segera |
-- | Pasca-pengurangan | $((a--)) | Mengurangi nilai variabel a dan mencerminkan perubahan ke baris berikutnya |
** | Eksponensial | $((a**2)) | Naikkan nilai a ke pangkat 2 |
+= | Plus sama | $((a+=b)) | Menambahkan nilai a dan b dan menyimpannya ke variabel a |
-= | Dikurangi sama | $((a-=b)) | Mengurangi nilai b dari a dan menyimpannya ke variabel a |
*= | kali sama | $((a*=b)) | Mengkalikan nilai a dan b dan menyimpannya ke variabel a |
/= | Slash sama | $((a/=b)) | Membagi nilai a dengan b dan menyimpannya ke variabel a |
%= | Mod-sama | $((a%=b)) | Lakukan pembagian modulo antara a dan b dan simpan ke variabel a |
Perhatikan bahwa setiap kali Anda melakukan instruksi aritmatika, semua variabel kami akan diapit dengan tanda dolar dan kurung ganda. Dengan melakukan ini, interpreter memperlakukan nilai variabel kita sebagai bilangan bulat. Tanpa itu, interpreter memperlakukan nilai variabel sebagai string. Untuk contohnya, lihat skrip di bawah:
#!/bin/bash
read -p "Enter int1: " a
read -p "Enter int2: " b
echo $((a+b))
c=$a+$b
echo $c
Saat kita menjalankan contoh kita, baris $((a+b)) menambahkan nilai pengguna yang masing-masing disimpan dalam variabel a dan b sedangkan c=$a+$b memperlakukan variabel a dan b sebagai string.
Kesimpulan
Kami telah membahas cara menerima input dan menyimpannya pada variabel dan cara melakukan operasi aritmatika dalam skrip bash shell. Di bagian selanjutnya, kami akan menampilkan struktur kontrol dan khususnya struktur keputusan.
Referensi:
Proyek Informasi Linux. (2007). Diakses pada 29 April 2015, dari Linfo.org: http://www.linfo.org/
Cooper, M.(n.d.). Panduan Skrip Bash Tingkat Lanjut. Diakses pada 29 April 2015, dari http://www.tldp.org/LDP/abs/html/
Variabel Lingkungan. (n.d.). Diakses pada 29 April 2015, dari Dokumentasi Ubuntu: https://help.ubuntu.com/community/EnvironmentVariables