5 Teknik Coding Bash Yang Harus Diketahui Setiap Programmer
Bash tidak diragukan lagi menjadi solusi otomasi built-in yang mirip dengan Unix atau sistem operasi berbasis Unix modern. Pemrogram menggunakan Bash untuk mengotomatiskan tugas baris perintah berulang mereka dengan membuat skrip shell. Tujuan utama Bash adalah untuk menawarkan sintaks minimal untuk menjalankan program lain dan bekerja dengan kode keluar dan keluarannya. Namun, juru bahasa Bash modern hadir dengan bahasa perintah berfitur lengkap yang menawarkan sebagian besar fitur bahasa pemrograman tujuan umum. Jadi, kita dapat menulis skrip shell yang sangat mudah dibaca dengan memasukkan permintaan baris perintah tradisional dan kode algoritmik. Versi Bash modern memperkenalkan larik asosiatif dan fitur terkait kinerja seperti dukungan referensi lewat untuk membuat Bash kompetitif dengan bahasa siap skrip shell lainnya.
Dalam cerita ini, saya akan menjelaskan beberapa teknik pengkodean Bash yang dapat Anda sertakan dalam skrip shell Anda untuk menjadikannya modern, cepat, dan mudah dibaca. Dengan teknik ini, Anda dapat menggunakan Bash untuk menulis pemrograman tujuan umum atau implementasi algoritme, seperti pembuatan prototipe algoritme, implementasi program utilitas, atau bahkan pemrograman kompetitif!
Menggunakan array dalam skrip shell
Variabel Bash tradisional biasanya tidak memiliki tipe, tetapi Anda dapat memprosesnya sebagai bilangan bulat, desimal, atau string sesuai dengan konteks pemrosesan tertentu. Kami biasanya menggunakan variabel Bash untuk menyimpan keluaran perintah, parameter algoritme, dan nilai sementara lainnya. Bash juga mendukung dua tipe array: satu dimensi (diindeks secara numerik) dan asosiatif (struktur nilai kunci). Bekerja dengan array Bash semudah dengan bahasa tujuan umum yang diketik secara dinamis populer lainnya, seperti Python, PHP, atau JavaScript. Lihat cara membuat array di Bash:
#!/bin/bash
numbers=(2 4 5 2)
declare -a words
words[0]='Orange'
words[1]='Pineapple'
echo ${numbers[@]} ${words[@]}
Anda dapat memeriksa deklarasi setiap referensi array dengan declarebuilt-in sebagai berikut:
Anda juga dapat melakukan manipulasi array dan aktivitas penanganan, seperti menambahkan item baru, menghapus item yang ada, memproses elemen array, menyortir, dll., dengan sintaks yang minimal. Misalnya, kode berikut menghapus nilai skor yang tidak valid dan mencetak tiga skor pertama tertinggi:
#!/bin/bash
declare -a marks
marks+=(75 65 80 102 26) # class A marks
marks+=(103 68) # class B marks
# Remove invalid marks
for i in "${!marks[@]}"; do
if ((marks[i] > 100)); then
unset "marks[$i]"
fi
done
# Sort all marks
marks_s=($(printf '%s\n' "${marks[@]}" | sort -nr))
# Prints the top-3
echo ${marks_s[0]} ${marks_s[1]} ${marks_s[2]}
Membuat peta atau kamus
Dalam beberapa skenario pengkodean, kami harus menyimpan data key-value pair di skrip shell kami. Pemrogram biasanya menggunakan struktur data nilai kunci untuk membuat struktur kamus, peta, dan wadah caching (melalui memoization ). Jika Anda menggunakan Python untuk menulis skrip shell, Anda dapat menggunakan struktur data kamus bawaan untuk menyimpan data nilai kunci. Bagaimana cara menggunakan struktur kamus di Bash?
Bash memperkenalkan fitur array asosiatif untuk menyimpan data nilai kunci di versi 4.0 . Mari kita lihat contoh sederhana untuk array asosiatif Bash:
#!/bin/bash
declare -A marks=([john]=75 [doe]=82 [ann]=83 [ava]=72)
for key in "${!marks[@]}"; do
printf "$key \t ${marks[$key]} \n"
done
Bash memungkinkan Anda menggunakan sintaks minimal untuk memanipulasi dan mengakses data array asosiatif. Bekerja dengan array asosiatif Bash seperti bekerja dengan kamus Python. Lihatlah contoh berikut:
#!/bin/bash
read -p "Enter coords (i.e., [x]=10 [y]=12): " coords
declare -A "coords=($coords)"
if [ ! -v "coords[x]" ]; then
coords[x]=5
fi
if [ ! -v "coords[y]" ]; then
coords[y]=10
fi
for key in "${!coords[@]}"; do
printf "$key = ${coords[$key]} \n"
done
Menerapkan dukungan argumen bernama
Saat Anda menjalankan skrip shell melalui juru bahasa Bash, sistem operasi membuat proses Bash baru dengan file skrip Anda sebagai argumen baris perintah pertama. Sistem operasi biasanya membiarkan Anda melewati urutan argumen ke dalam setiap proses sistem operasi. Saat Anda memberikan argumen baris perintah untuk perintah/proses lain, Anda juga dapat meneruskannya ke skrip Bash Anda. Asumsikan bahwa Anda perlu meneruskan dua nilai bilangan bulat ke skrip. Kemudian, Anda dapat dengan mudah menggunakan $1dan $2untuk mengakses masing-masing nilai argumen pertama dan kedua. Namun, hal-hal akan menjadi rumit ketika Anda menggunakan lebih banyak argumen yang diindeks, dan Anda perlu mengimplementasikan argumen opsional (alias flag atau opsi baris perintah).
Sebagai solusi untuk skenario ini, Anda dapat menggunakan argumen bernama dengan bawaan getopts. Dengan skrip shell berikut, kita dapat mengganti beberapa nilai bawaan dalam skrip:
#!/bin/bash
title="Information"
message="Hello world"
while getopts ":t:m:" option; do
echo $option
case "${option}" in
t)
title=${OPTARG}
;;
m)
message=${OPTARG}
;;
esac
done
zenity --info --title="$title" --text="$message"
Dukungan getoptsbawaan hanya menggunakan opsi satu huruf. Anda dapat menggunakan getoptopsi bentuk panjang (yaitu, --title), seperti yang ditunjukkan di Gist ini . Pelajari lebih lanjut tentang menambahkan elemen GUI dalam skrip Bash dengan cerita berikut:
Menggunakan referensi lewat dalam fungsi
Pass-by-reference adalah fitur bahasa pemrograman yang memungkinkan Anda meneruskan data ke fungsi melalui referensi memori, daripada menyalin seluruh segmen data ke dalam variabel baru. Pemrogram C++ selalu berusaha untuk menulis kode yang mengutamakan kinerja menggunakan referensi lewat-lewat-nilai-lewati untuk objek kelas, struct, dan string.
Jika Anda menggunakan Bash 4.3 atau versi yang lebih baru, Anda dapat menggunakan referensi nama untuk mengimplementasikan referensi lewat dalam skrip shell. Berikut adalah cuplikan kode contoh sederhana yang mengubah variabel string melalui fungsi:
#!/bin/bash
function change_str_var() {
local str_new="Bash"
local -n str_ref=$1
echo "$str_ref -> $str_new" # Python -> Bash
str_ref=$str_new
}
str="Python"
change_str_var str
echo $str # Bash
Beberapa pemrogram menggunakan echoperintah di dalam suatu fungsi dan memanggil fungsi tertentu melalui fitur substitusi perintah untuk mengembalikan nilai dari fungsi Bash (karena returnkata kunci Bash asli hanya mendukung pengembalian kode keluar yang valid). Itu memunculkan shell anak lain dan menghabiskan lebih banyak sumber daya. Jadi, sekarang pemrogram dapat menggunakan pass-by-reference dan menulis pengembalian fungsi Bash yang mengutamakan kinerja jika mereka menggunakan versi Bash yang baru.
Menggunakan atribut tipe dan pengubah untuk variabel
Bash dikenal sebagai bahasa perintah yang tidak diketik . Dengan kata lain, biasanya menangani data variabel sebagai string tetapi menanganinya berdasarkan konteks (yaitu, dalam ekspansi aritmatika). Di sisi lain, Bash juga memungkinkan pemrogram menggunakan atribut tipe dan menyediakan dua tipe array inbuilt. Bahkan dengan fitur-fitur ini, kami tidak dapat mengidentifikasi Bash sebagai bahasa yang diketik secara dinamis murni, tetapi atribut variabel ini menempatkan Bash di antara akhir bahasa yang tidak diketik dan yang diketik secara dinamis.
Bash mendukung penandaan variabel tertentu sebagai bilangan bulat menggunakan atribut variabel bilangan bulat. Setelah Anda membuat variabel bilangan bulat, Bash memperingatkan Anda saat Anda menetapkan nilai bukan bilangan bulat sebagai berikut:
Bash juga memungkinkan Anda membuat konstanta menggunakan declare -rperintah. Setiap kali skrip Anda mencoba mengubah konstanta, Bash mencetak pesan kesalahan di layar. Selain itu, seperti yang kami gunakan sebelumnya, Anda dapat membuat array dengan builtin declare.
Bash juga memungkinkan Anda menambahkan beberapa atribut pengubah ke variabel. Misalnya, Anda dapat membuat string hanya huruf kecil atau huruf besar saja sebagai berikut:
#!/bin/bash
declare -l lc_str="Hello World"
declare -u uc_str
uc_str="Hello"
uc_str="World"
echo $lc_str # hello world
echo $uc_str # WORLD
Kisah berikut mengajarkan Anda beberapa tip untuk menulis skrip Bash modern yang lebih baik:
Terima kasih sudah membaca.
Tingkatkan Pengodean
Terima kasih telah menjadi bagian dari komunitas kami! Sebelum kamu pergi:
- Tepuk tangan untuk ceritanya dan ikuti penulisnya
- Lihat lebih banyak konten di publikasi Level Up Coding
- Kursus wawancara coding gratis ⇒ Lihat Kursus
- Ikuti kami: Twitter | LinkedIn | Buletin

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































