Writing Simple Bash Scripts
Tags: ramadhanbersamaredhat, redhat134, cloudcomputing, chapter1
Published: 2024-03-31 06:57:30

**Tujuan**
Setelah menyelesaikan bagian ini, Anda seharusnya dapat mengotomatiskan rangkaian perintah dengan menulis skrip shell sederhana.

**Membuat dan Menjalankan Skrip Bash Shell**
Banyak tugas administrasi sistem yang sederhana dan umum diselesaikan menggunakan alat baris perintah. Tugas dengan kompleksitas yang lebih besar sering kali memerlukan penggabungan beberapa perintah yang meneruskan hasil di antara perintah tersebut. Menggunakan lingkungan Bash shell dan fitur skrip, perintah Linux digabungkan menjadi _shell scripts_ untuk dengan mudah memecahkan masalah dunia nyata yang berulang dan sulit.

Dalam bentuknya yang paling sederhana, skrip Bash shell adalah file yang dapat dieksekusi yang berisi daftar perintah, dan mungkin dengan logika pemrograman untuk mengontrol pengambilan keputusan dalam keseluruhan tugas. Jika ditulis dengan baik, skrip shell merupakan alat baris perintah yang kuat, dan dapat dimanfaatkan oleh skrip lain.

Kemahiran skrip Shell sangat penting untuk keberhasilan administrasi sistem di lingkungan operasional apa pun. Pengetahuan tentang skrip shell sangat penting dalam lingkungan perusahaan, di mana penggunaan skrip dapat meningkatkan efisiensi dan akurasi penyelesaian tugas rutin.

Anda dapat membuat skrip Bash shell dengan membuka file kosong baru di editor teks. Meskipun Anda dapat menggunakan editor teks apa pun, editor tingkat lanjut, seperti **vim** atau **emacs**, memahami sintaksis Bash shell dan dapat memberikan color-codedpenyorotan. Penyorotan ini membantu mengidentifikasi kesalahan umum seperti sintaksis yang tidak tepat, tanda kutip tidak berpasangan, tanda kurung tidak tertutup, kurung kurawal, dan tanda kurung, dan banyak lagi.

**Menentukan Penerjemah Perintah**
Baris pertama suatu naskah diawali dengan notasi '#!', biasa disebut sh-bang atau she-bang, dari nama kedua karakter tersebut, sharp dan bang. Notasi dua byte khusus ini _magic number_ menunjukkan skrip interpretatif; sintaks yang mengikuti notasi adalah nama file yang sepenuhnya memenuhi syarat untuk command interpreterkebutuhan yang benar untuk memproses baris skrip ini. Untuk memahami cara _magic numbers_ menunjukkan tipe file di Linux, lihat halaman manual **file(1)** dan **magic(5)**. Untuk file skrip yang menggunakan sintaks skrip Bash, baris pertama skrip shell dimulai sebagai berikut:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u2nzb8va782qmk8mzn4m.png)

**Menjalankan Skrip Bash Shell**
Skrip shell yang telah selesai harus dapat dieksekusi agar dapat dijalankan sebagai perintah biasa. Gunakan perintah **chmod** untuk menambahkan izin eksekusi, mungkin bersamaan dengan perintah **chown** untuk mengubah kepemilikan file skrip. Berikan izin eksekusi hanya untuk pengguna skrip yang dituju.

Jika Anda menempatkan skrip di salah satu direktori yang tercantum dalam variabel lingkungan shell PATH, maka Anda dapat memanggil skrip shell menggunakan nama file saja seperti pada perintah lainnya. Shell menggunakan perintah pertama yang ditemukannya dengan nama file tersebut; hindari menggunakan nama perintah yang ada untuk nama file skrip shell Anda. Alternatifnya, Anda dapat memanggil skrip shell dengan memasukkan nama jalur ke skrip pada baris perintah. Perintah **yang mana**, diikuti dengan nama file skrip yang dapat dieksekusi, menampilkan nama jalur ke perintah yang akan dijalankan.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ljv7810i2t3fy0ep3uwb.png)

**Mengutip Karakter Khusus**
Sejumlah karakter dan kata memiliki arti khusus pada shell Bash. Namun, terkadang Anda ingin menggunakan karakter ini untuk nilai literalnya, bukan untuk arti khususnya. Untuk melakukan ini, gunakan salah satu dari tiga alat untuk menghapus (ataumelarikan diri) arti khusus: garis miring terbalik (\), tanda kutip tunggal (''), atau tanda kutip ganda ("").

Karakter escape backslash menghilangkan arti khusus dari karakter tunggal yang mengikutinya. Misalnya, untuk menampilkan string literal # not a comment dengan perintah **echo**, tanda # tidak boleh ditafsirkan oleh Bash sebagai memiliki arti khusus. Tempatkan karakter garis miring terbalik di depan tanda #.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cyk60n06bgtas5b443qi.png)

Saat Anda perlu meng-escape lebih dari satu karakter dalam string teks, gunakan karakter escape beberapa kali atau gunakan tanda kutip tunggal (''). Kutipan tunggal mempertahankan arti literal dari semua karakter yang dicantumkannya. Amati tindakan karakter escape dan tanda kutip tunggal:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lphjgkclz0inl2566weq.png)

Gunakan tanda kutip ganda untuk menekan ekspansi globbing dan shell, namun tetap mengizinkan substitusi perintah dan variabel. Substitusi variabel secara konseptual identik dengan substitusi perintah, tetapi dapat menggunakan sintaks kurung kurawal opsional. Perhatikan contoh berbagai bentuk penggunaan tanda kutip di bawah ini.

Gunakan tanda kutip tunggal untuk menafsirkan seluruh teks secara harfiah. Selain menekan ekspansi globbing dan shell, kutipan mengarahkan shell untuk juga menekan substitusi perintah dan variabel. Tanda tanya (?) adalah tanda meta-character yang juga perlu dilindungi dari perluasan.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/waxni82y96fexapgo48g.png)

**Memberikan Output Dari Skrip Shell**
Perintah **echo** menampilkan teks arbitrer dengan meneruskan teks tersebut sebagai argumen ke perintah. Secara default, teks ditampilkan aktif _standard output (STDOUT)_, tapi bisa juga ditujukan _standard error (STDERR)_ menggunakan pengalihan keluaran. Dalam skrip Bash sederhana berikut, perintah **echo** menampilkan pesan "Hello, world" ke STDOUT.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lr58oxjg5cmesackh85p.png)

Perintah **echo** banyak digunakan dalam skrip shell untuk menampilkan pesan informasi atau kesalahan. Pesan-pesan ini dapat menjadi indikator yang berguna mengenai kemajuan skrip dan dapat diarahkan ke keluaran standar, kesalahan standar, atau dialihkan ke file log untuk pengarsipan. Saat menampilkan pesan kesalahan, sebaiknya arahkan pesan tersebut ke STDERR agar lebih mudah membedakan pesan kesalahan dari pesan status normal.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6q8zqdmepm7axh3gb1af.png)

Perintah **echo** juga bisa sangat membantu ketika mencoba men-debug skrip shell yang bermasalah. Penambahan pernyataan **echo** ke bagian skrip yang tidak berfungsi seperti yang diharapkan dapat membantu memperjelas perintah yang dijalankan, serta nilai variabel yang dipanggil.