Writing Simple Bash Scripts
Membuat dan Menjalankan Bash Shell Script
Bash shell adalah file yang dapat dieksekusi yang berisi daftar perintah, dan mungkin dikombinasikan 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.
Pengetahuan tentang skrip shell sangat penting dalam lingkungan perusahaan, di mana penggunaan skrip dapat meningkatkan efisiensi dan akurasi penyelesaian tugas rutin.
Menentukan Penerjemah Perintah
Baris pertama suatu script harus diawali dengan notasi #!, biasa disebut sh-bang atau she-bang, nama kedua karakter tersebut, sharp “#” dan bang “!”. Notasi dua byte khusus ini 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 file skrip yang menggunakan sintaks skrip Bash, baris pertama skrip shell dimulai sebagai berikut:
#!/bin/bash
Menjalankan Bash Shell Script
Ketika file script telah dibuat dan selesai, harus diberikan permissions executable(x) dengan perintah chmod, agar bisa dijalankan. Anda juga bisa mencantumkan file script tersebut pada directory Shell PATH agar anda dapat memanggil script anda hanya dengan nama filenya saja tanpa menuliskan path absolutnya. Gunakan command which diikuti nama file anda untuk melihat nama path dapat di jalankan.
[user@host ~]$ which hello
~/bin/hello
[user@host ~]$ echo $PATH
/home/user/.local/bin:/home/user/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
Quoting Special Characters
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 # adalah sebuah komen yang tidak dijalankan oleh bash. Kecuali jika anda menambahkan karakter / sebelum # maka akan ditafsirkan/jalankan.
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.
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-characteryang juga perlu dilindungi dari perluasan.
Memberi Output dari Shell Script
echo menampilkan teks arbitrer dengan meneruskan teks tersebut sebagai argumen ke perintah. Secara default, teks ditampilkan aktifkeluaran standar (STDOUT), tapi bisa juga ditujukan kekesalahan standar (STDERR) menggunakan pengalihan keluaran.
Loops to Iterate Commands
Memungkinkan kemudahan bagi seorang administrasi untuk menggunakan beberapa comand yang berulang dalam waktu tertentu misalkan selama 10 menit dalam sehari.
Memproses Item dari Baris Perintah
Anda dapat menggunakan struktur seperti:
for VARIABLE in LIST; do
COMMAND VARIABLE
done
Loop memproses string yang disediakan di LIST secara ber urutan satu per satu dan dikeluarkan setelah memproses string terakhir dalam daftar. Setiap daftar disimpan pada VARIABLE untuk sementara saat foor loop mengeksekusi perintah yang dalam kontruksinya. Contoh:
[user@host ~]$ for HOST in host{1,2,3}; do echo $HOST; done
Kode Keluar dalam Skrip
exit digunakan untuk menghentikan eksekusi script dan mengembalikan nilai keluaran (exit code). Merupakan kode keluaran yang akan dikembalikan oleh sistem operasi. Dapat berupa angka dari 0 – 255. Nila 0 berarti tidak terjadi eror/script berjalan sukses dan 1-255 menunjukan adanya eror dalam menjalankan script. Kode keluar ini disimpan dalam variabel ?.
[user@host bin]$ cat hello
#!/bin/bash
echo "Hello, world"
exit 0
[user@host bin]$ ./hello
Hello, world
[user@host bin]$ echo $?
0
Testing Script Inputs
test memriksa integritas. Perintah ini menghasilkan kode keluar yang disimpan sebagai nilai pada $?.
untuk menampilkan nilainya, tampilkan nilainya dengan echo $? Setelah perintah test. Nilai 0 adalah True dan 1 adalah False. Pengujian dapat menggunakan berbagai operator, misalnya lebih besar dari, lebih besari atau sama dengan, lebih kecil dari, lebih kecil atau sama dengan, atau sama dengan.
[user@host ~]$ test [ 1 -gt 0 ] ; echo $?
0
[user@host ~]$ test [ 0 -gt 1 ] ; echo $?
1
Struktur Bersyarat
Konstruksi if/then
Jika suatu kondisi terpenuhi, maka satu atau lebih tindakan akan dieksekusi. Jika kondisi tertentu tidak terpenuhi, maka tidak ada tindakan yang dijalankan.
[user@host ~]$ if [ $? -ne 0 ]; then
> sudo systemctl start psacct
> fi
Konstruksi if/then/else
Konstruknya if/then dapat diperluas lebih lanjut sehingga rangkaian tindakan yang berbeda dapat diambil tergantung pada apakah suatu kondisi terpenuhi. Hal ini dicapai dengan if/then/else.
[user@host ~]$ systemctl is-active psacct > /dev/null 2>&1
[user@host ~]$ if [ $? -ne 0 ]; then
> sudo systemctl start psacct
> else
> sudo systemctl stop psacct
> fi
Kontruksi if/then/elif/then/else
Untuk menguji lebih dari satu kondisi, mengeksekusi serangkaian tindakan yang berbeda ketika suatu kondisi terpenuhi.
[user@host ~]$ systemctl is-active mariadb > /dev/null 2>&1
MARIADB_ACTIVE=$?
[user@host ~]$ sudo systemctl is-active postgresql > /dev/null 2>&1
POSTGRESQL_ACTIVE=$?
[user@host ~]$ if [ "$MARIADB_ACTIVE" -eq 0 ]; then
> mysql
> elif [ "$POSTGRESQL_ACTIVE" -eq 0 ]; then
> psql
> else
> sqlite3
> fi
Mencocokkan Teks dalam Output Perintah
grep adalah perintah yang digunakan untuk mencari teks dalam satu atau lebih file atau output dari perintah lain. Berikut adalah beberapa contoh penggunaan umum.
Contoh berikutnya menggunakan beragam file konfigurasi dan file log.
Ekspresi reguler peka huruf besar-kecil secara default. Gunakan -i opsi dengan grep untuk menjalankan pencarian yang tidak peka huruf besar-kecil. Contoh berikut mencari server root.
[user@host ~]$ cat /etc/httpd/conf/httpd.conf
...output omitted...
ServerRoot "/etc/httpd"
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80
...output omitted...
[user@host ~]$ grep -i serverroot /etc/httpd/conf/httpd.conf
# with "/", the value of ServerRoot is prepended -- so 'log/access_log'
# with ServerRoot set to '/www' will be interpreted by the
# ServerRoot: The top of the directory tree under which the server's
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# same ServerRoot for multiple httpd daemons, you will need to change at
ServerRoot "/etc/httpd"
Top comments (4)
Waw sepuh🔥
Thank you😁
menyala❤️🔥
thank you sir 😎