Menu
📱 Lihat versi lengkap (non-AMP)
Bash Linux Automation

Panduan Lengkap Bash Scripting untuk Automasi Task Harian di Linux

Editor: Hendra WIjaya
Update: 3 February 2026
Baca: 4 menit

Panduan Lengkap Bash Scripting untuk Automasi Task Harian di Linux

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="user@example.com"

# 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]="budi@example.com"
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 "$src" ]; then
        echo "Error: Source directory tidak ditemukan" >&2
        return 1
    fi
    
    local timestamp=$(date +%Y%m%d_%H%M%S)
    local backup_name="backup_${timestamp}.tar.${compression}"
    
    tar -czf "${dest}/${backup_name}" -C "$src" .
    echo "Backup tersimpan: ${dest}/${backup_name}"
}

# 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.

Artikel Terkait

Bagikan:

Link Postingan: https://www.tirinfo.com/panduan-lengkap-bash-scripting-automasi-task-harian-linux/