Lewati ke konten
Kembali ke Blog

Panduan Lengkap Bash Scripting untuk Automasi Task Harian di Linux

· · 6 menit baca

Bash scripting merupakan keterampilan fundamental yang wajib dikuasai setiap pengguna Linux. Dengan bash script, Anda dapat mengotomatisasi task berulang, meningkatkan produktivitas, dan menghemat waktu berjam-jam setiap minggu. Artikel ini akan membahas dari dasar hingga teknik advanced bash scripting.

1. Pengenalan Bash Script dan Struktur Dasar

Bash (Bourne Again Shell) adalah shell default di sebagian besar distribusi Linux. Script bash adalah file teks yang berisi kumpulan command yang dapat dieksekusi.

Membuat Script Pertama Anda

#!/bin/bash
# Ini adalah komentar

echo "Hello, World!" echo "Tanggal hari ini: $(date)"

Save file sebagai hello.sh dan jalankan:

chmod +x hello.sh
./hello.sh

Shebang (#!/bin/bash) adalah baris pertama yang memberitahu sistem interpreter mana yang akan digunakan.

Best Practices Struktur Script

#!/bin/bash

Author: Nama Anda

Created: 2026-02-03

Description: Script untuk backup otomatis

Version: 1.0

set -euo pipefail # Exit on error, undefined vars, pipe failures

Variabel

BACKUP_DIR="/backup" LOG_FILE="/var/log/backup.log"

Fungsi

log_message() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" }

Main script

main() { log_message "Memulai proses backup..."

Logic utama di sini

log_message "Backup selesai!"

}

Jalankan main function

main "$@"

2. Variabel dan Tipe Data dalam Bash

Bash mendukung beberapa tipe variabel yang penting untuk dipahami.

Deklarasi dan Penggunaan Variabel

#!/bin/bash

Variabel string

NAMA="Linux User" EMAIL="[email protected]"

Variabel angka

USIA=25 PI=3.14

Mengakses variabel dengan $

echo "Nama: $NAMA" echo "Email: ${EMAIL}"

Variabel environment

export DATABASE_URL="mysql://localhost:3306/mydb"

Command substitution

CURRENT_DIR=$(pwd) DATE_NOW= date echo "Direktori saat ini: $CURRENT_DIR" echo "Waktu sekarang: $DATE_NOW"

Array dalam Bash

#!/bin/bash

Array satu dimensi

FRUITS=("Apel" "Jeruk" "Mangga" "Pisang") echo "Buah pertama: ${FRUITS[0]}" echo "Semua buah: ${FRUITS[@]}" echo "Jumlah buah: ${#FRUITS[@]}"

Looping array

for fruit in "${FRUITS[@]}"; do echo "Buah: $fruit" done

Array asosiatif (Bash 4.0+)

declare -A USER_INFO USER_INFO[name]="Budi" USER_INFO[email]="[email protected]" USER_INFO[age]=30

echo "Nama: ${USER_INFO[name]}"

3. Struktur Kontrol: Kondisi dan Looping

Kontrol alur program sangat penting untuk scripting yang kompleks.

Kondisional dengan if-else

#!/bin/bash

FILE="/etc/passwd"

Cek file exists

if [ -f "$FILE" ]; then echo "File $FILE ditemukan" else echo "File $FILE tidak ditemukan" fi

Multiple conditions

USER_COUNT=$(who | wc -l) if [ "$USER_COUNT" -eq 0 ]; then echo "Tidak ada user login" elif [ "$USER_COUNT" -eq 1 ]; then echo "1 user sedang login" else echo "$USER_COUNT user sedang login" fi

Test conditions dengan [[ ]] (modern syntax)

if [[ "$USER_COUNT" -gt 0 && "$USER_COUNT" -lt 10 ]]; then echo "User count dalam range normal" fi

Operator Perbandingan

# String comparison
if [ "$A" = "$B" ]      # Equal
if [ "$A" != "$B" ]     # Not equal
if [ -z "$A" ]          # String kosong
if [ -n "$A" ]          # String tidak kosong

Numeric comparison

if [ "$A" -eq "$B" ] # Equal if [ "$A" -ne "$B" ] # Not equal if [ "$A" -gt "$B" ] # Greater than if [ "$A" -lt "$B" ] # Less than if [ "$A" -ge "$B" ] # Greater or equal if [ "$A" -le "$B" ] # Less or equal

File tests

if [ -e "$FILE" ] # File exists if [ -f "$FILE" ] # Regular file if [ -d "$FILE" ] # Directory if [ -r "$FILE" ] # Readable if [ -w "$FILE" ] # Writable if [ -x "$FILE" ] # Executable if [ -s "$FILE" ] # File not empty

Looping dengan for

#!/bin/bash

For loop dengan range

for i in {1..5}; do echo "Iterasi ke-$i" done

For loop dengan step

for i in {0..10..2}; do echo "Nomor genap: $i" done

For loop files

for file in *.txt; do echo "Processing: $file" wc -l "$file" done

C-style for loop

for ((i=0; i<10; i++)); do echo "Counter: $i" done

While dan Until Loops

#!/bin/bash

While loop

COUNTER=0 while [ $COUNTER -lt 5 ]; do echo "Counter: $COUNTER" ((COUNTER++)) done

Read file line by line

while IFS= read -r line; do echo "Line: $line" done < "input.txt"

Until loop (berjalan sampai kondisi true)

COUNT=10 until [ $COUNT -eq 0 ]; do echo "Countdown: $COUNT" ((COUNT--)) done

4. Fungsi dan Modularisasi Script

Membuat fungsi memungkinkan reuse code dan struktur yang lebih baik.

Membuat Fungsi

#!/bin/bash

Fungsi sederhana

say_hello() { echo "Hello, $1!" }

Fungsi dengan return value

get_disk_usage() { local path="${1:-/}" local usage=$(df -h "$path" | tail -1 | awk '{print $5}' | tr -d '%') echo "$usage" }

Fungsi dengan multiple parameters

backup_directory() { local src="$1" local dest="$2" local compression="${3:-gzip}"

if [ ! -d &quot;$src&quot; ]; then
    echo &quot;Error: Source directory tidak ditemukan&quot; &gt;&amp;2
    return 1
fi

local timestamp=$(date +%Y%m%d_%H%M%S)
local backup_name=&quot;backup_${timestamp}.tar.${compression}&quot;

tar -czf &quot;${dest}/${backup_name}&quot; -C &quot;$src&quot; .
echo &quot;Backup tersimpan: ${dest}/${backup_name}&quot;

}

Penggunaan

say_hello "Budi"
USAGE=$(get_disk_usage "/home")
echo "Disk usage: ${USAGE}%"
backup_directory "/var/www" "/backup" "gz"

Source File Eksternal

#!/bin/bash

Load konfigurasi dari file eksternal

source "config.sh"

atau

. "config.sh"

Load library fungsi

source "lib/utils.sh"

Gunakan fungsi dari library

check_root log_info "Script dimulai"

Kesimpulan

Bash scripting adalah skill yang sangat powerful untuk automasi task di Linux. Dengan menguasai variabel, kondisi, looping, dan fungsi, Anda dapat membuat script yang robust dan maintainable.

Tips untuk Pemula:
1. Selalu gunakan set -euo pipefail untuk error handling
2. Gunakan double quotes untuk variabel: "$VAR"
3. Tambahkan komentar yang jelas
4. Test script secara bertahap sebelum production
5. Gunakan shellcheck untuk static analysis

Mulailah dengan task sederhana seperti backup file atau monitoring system, kemudian tingkatkan kompleksitas seiring dengan pengalaman Anda.

Ditulis oleh

Hendra Wijaya

Tinggalkan Komentar

Email tidak akan ditampilkan.