Bismillah

Setelah mempelajari mengenai elemen-elemen dasar pada suatu script, kali ini saya akan menjelaskan bagaimana membuat file script.

Jika Anda ingin mempelajari ulang mengenai elemen-elemen yang dimaksud, bisa Anda pelajari melalui tautan-tautan dibawah ini:

  1. Konsep dasar Shell Variables
  2. Konsep dasar Shell Conditionals
  3. Konsep dasar Shell Loops
  4. Konsep dasar Shell Functions

Pada dasarnya, shell script merupakan file yang berisi serangkaian instruksi shell yang disusun sedemikian rupa untuk tujuan tertentu.

Diantara tujuan tersebut dapat berupa instruksi otomasi proses, CLI (command line interface) tool, program wrapper sebagai ekstensi suatu program lain yang sudah ada, dan semisalnya.

Struktur Dasar

Ekstensi file

Pada umumnya, file script diberi akhiran .sh namun sebenarnya ini tidak wajib. Hanya saja ini merupakan praktik yang umum dilakukan.

Namun, ini akan memudahkan user untuk bisa mengetahui bahwa suatu file adalah file script atau bukan, bisa dilihat dari ekstensi .sh-nya.

Shebang / Hashbang

Suatu file script selalu diawali dengan yang namanya SHEBANG atau HASHBANG. Contohnya adalah seperti berikut ini:

#!/usr/bin/bash

Fungsi dari shebang ini adalah untuk memberitahu shell bahwa untuk menjalankan script tersebut, program yang digunakan adalah bash (atau yang lainnya).

Maka, shebang ini ditentukan di baris paling pertama, diawali dengan karakter pagar dan pentung #!. Kemudian diikuti dengan path menuju file binary program/shell yang ingin ditulis scriptnya.

Misalnya, jika hendak menulis script untuk Bourne Shell (sh), maka:

#!/bin/sh

atau Z Shell:

#!/bin/zsh

atau Python 3.10:

#!/usr/bin/python3.10

atau awk:

#!/usr/bin/awk -f

dan sebagainya.

Bagaimana jika path untuk shell Bash (misalnya), lokasinya tidak menentu? Bisa jadi ada di /bin/bash atau /usr/bin/bash atau /usr/local/bin/bash ?

Praktik yang disarankan adalah menggunakan program env, contoh:

#!/usr/bin/env bash

Dengan demikian, env akan mencari path yang valid untuk shell Bash tanpa harus menentukannya secara hard-coded.

Memiliki izin eksekusi (executable)

Suatu file script perlu memliki izin eksekusi (executable) agar bisa dieksekusi langsung tanpa harus memanggil shell yang terkait.

chmod +x file.sh

Jika tidak demikian, ketika hendak dieksekusi, maka shell akan mengeluarkan error “Permission denied”.

$ ./script.sh
bash: ./script.sh: Permission denied

Atau, perlu memanggil program/shell yang akan digunakan terlebih dahulu sebelum mengeksekusi. Contohnya:

$ bash script.sh
# atau
$ python script.py
...

Contoh file script

Script hello-world.sh:

#!/usr/bin/env bash

echo "Hello, World!"

Script oraganize.sh, berfungsi untuk menata file berdasarkan ekstensi file:

#!/usr/bin/env bash

if [[ -z "$1" ]]; then
    echo "Penggunaan: $(basename $0) /path/to/dir"
    exit
fi

if [[ ! -d "$1" ]]; then
    echo "Direktori tidak valid"
    exit 1
fi

find "$1" -maxdepth 1 -type f | while read file; do
    extension=${file##*.}
    new_folder="${1%/}/${extension}"
    mkdir -p "$new_folder" \
        && mv "$file" "$new_folder"
done

Semoga bermanfaat, barakallahufiikum.