DEV Community

Safrina Zahrani
Safrina Zahrani

Posted on

Writing Simple Bash Scripts

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

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

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

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

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

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

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

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.

Top comments (0)