Variabel dan Kontrol Alur
Variabel, kondisi, dan perulangan di Bash
Variabel
Deklarasi dan Assignment
nama="Alice"
umur=25
# Tanpa spasi di sekitar =
# Salah: nama = "Alice"Mengakses Variabel
echo $nama
echo ${nama} # Lebih aman, mendukung interpolation
echo "${nama}us" # Interpolation dengan suffixVariabel Readonly dan Local
readonly PI=3.14 # Tidak bisa diubah
local var="lokal" # Hanya dalam fungsiInput dari User
read -p "Masukkan nama: " nama
echo "Halo, $nama"
read -s -p "Masukkan password: " pass # -s: silent (tidak tampil)
echoArithmetic
a=5
b=3
# Cara 1: let
let hasil=a+b
echo $hasil
# Cara 2: $(( ))
echo $((a + b))
echo $((a * b))
echo $((a / b)) # Integer division
echo $((a % b)) # ModuloKondisi (if/else)
Test Command
# Cara 1: [ ] (test built-in)
if [ "$nama" = "Alice" ]; then
echo "Alice"
fi
# Cara 2: [[ ]] (lebih powerful, Bash-specific)
if [[ "$nama" == "Alice" ]]; then
echo "Alice"
fiString Comparison
[ "$a" = "$b" ] # Sama
[ "$a" != "$b" ] # Tidak sama
[ -z "$a" ] # Kosong (zero length)
[ -n "$a" ] # Tidak kosong
[ "$a" ] # Sama dengan -nFile Test
[ -e file.txt ] # File ada (exists)
[ -f file.txt ] # File regular
[ -d dir ] # Direktori
[ -r file.txt ] # Readable
[ -w file.txt ] # Writable
[ -x file.txt ] # Executable
[ -s file.txt ] # Non-zero size
[ file1 -nt file2 ] # file1 lebih baru dari file2Numerik Comparison
[ $a -eq $b ] # Equal
[ $a -ne $b ] # Not equal
[ $a -lt $b ] # Less than
[ $a -le $b ] # Less than or equal
[ $a -gt $b ] # Greater than
[ $a -ge $b ] # Greater than or equalContoh If-Else
#!/bin/bash
if [ -f "$1" ]; then
echo "File $1 ditemukan"
echo "Ukuran: $(stat -f%z "$1" 2>/dev/null || stat -c%s "$1") bytes"
elif [ -d "$1" ]; then
echo "$1 adalah direktori"
else
echo "$1 tidak ditemukan"
fiCase Statement
#!/bin/bash
case $1 in
start)
echo "Starting service..."
;;
stop)
echo "Stopping service..."
;;
restart)
echo "Restarting service..."
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esacPerulangan
For Loop
# Iterasi list
for file in *.txt; do
echo "Processing: $file"
done
# Iterasi range
for i in {1..5}; do
echo "Iterasi $i"
done
# C-style for
for ((i=0; i<5; i++)); do
echo "Index $i"
done
# Iterasi array
fruits=("apple" "banana" "cherry")
for fruit in "${fruits[@]}"; do
echo "$fruit"
doneWhile Loop
#!/bin/bash
counter=0
while [ $counter -lt 5 ]; do
echo "Counter: $counter"
((counter++))
done
# Membaca file baris per baris
while IFS= read -r line; do
echo "$line"
done < file.txtUntil Loop
counter=0
until [ $counter -ge 5 ]; do
echo "Counter: $counter"
((counter++))
doneBreak dan Continue
for i in {1..10}; do
[ $i -eq 3 ] && continue # Skip iterasi 3
[ $i -eq 7 ] && break # Berhenti saat i = 7
echo "$i"
doneBest Practice
- Selalu quote variabel:
"$var"bukan$var - Gunakan
[[ ]]untuk string comparison di Bash - Gunakan
$(( ))untuk arithmetic - Hindari backticks
`cmd`, gunakan$(cmd)