GNU/Linux >> Belajar Linux >  >> Linux

Penanganan kesalahan dalam skrip Bash

Skrip adalah salah satu alat utama bagi sysadmin untuk mengelola serangkaian aktivitas sehari-hari seperti menjalankan pencadangan, menambahkan pengguna/grup, menginstal/memperbarui paket, dll. Saat menulis skrip, penanganan kesalahan adalah salah satu hal penting hal-hal yang harus dikelola.

Artikel ini menunjukkan beberapa teknik dasar/menengah untuk menangani penanganan kesalahan dalam skrip Bash. Saya membahas cara mendapatkan kode kesalahan, mendapatkan keluaran verbose saat menjalankan skrip, menangani fungsi debug, dan pengalihan kesalahan standar. Dengan menggunakan teknik ini, sysadmin dapat mempermudah pekerjaan sehari-hari mereka.

[ Pembaca juga menyukai: Kode keluar baris perintah bash dihilangkan ]

Status keluar

Dalam skrip Bash, $? mencetak status keluar. Jika kembali nol, itu berarti tidak ada kesalahan. Jika bukan nol, maka Anda dapat menyimpulkan bahwa tugas sebelumnya memiliki beberapa masalah.

Contoh dasarnya adalah sebagai berikut:

$ cat myscript.sh
           #!/bin/bash
           mkdir learning
           echo $?

Jika Anda menjalankan skrip di atas sekali, skrip akan mencetak 0 karena direktorinya tidak ada, maka script akan membuatnya. Secara alami, Anda akan mendapatkan nilai bukan nol jika menjalankan skrip untuk kedua kalinya, seperti yang terlihat di bawah ini:

$ sh myscript.sh
mkdir: cannot create directory 'learning': File exists
1

Praktik terbaik

Selalu disarankan untuk mengaktifkan mode debug dengan menambahkan -e opsi untuk skrip shell Anda seperti di bawah ini:

$ cat test3.sh
!/bin/bash
set -x
echo "hello World"
mkdiir testing
 ./test3.sh
+ echo 'hello World'
hello World
+ mkdiir testing
./test3.sh: line 4: mkdiir: command not found

Anda dapat menulis fungsi debug seperti di bawah ini, yang membantu untuk memanggilnya kapan saja, menggunakan contoh di bawah ini:

$ cat debug.sh
#!/bin/bash
_DEBUG="on"
function DEBUG()
{
 [ "$_DEBUG" == "on" ] && $@
}
DEBUG echo 'Testing Debudding'
DEBUG set -x
a=2
b=3
c=$(( $a + $b ))
DEBUG set +x
echo "$a + $b = $c"

Yang dicetak:

$ ./debug.sh
Testing Debudding
+ a=2
+ b=3
+ c=5
+ DEBUG set +x
+ '[' on == on ']'
+ set +x
2 + 3 = 5

Pengalihan kesalahan standar

Anda dapat mengalihkan semua kesalahan sistem ke file khusus menggunakan kesalahan standar, yang dapat dilambangkan dengan angka 2 . Jalankan dalam perintah Bash normal, seperti yang ditunjukkan di bawah ini:

$ mkdir users 2> errors.txt
$ cat errors.txt
mkdir: cannot create directory ‘users’: File exists

Sebagian besar waktu, sulit untuk menemukan nomor baris yang tepat dalam skrip. Untuk mencetak nomor baris dengan kesalahan, gunakan PS4 opsi (didukung dengan Bash 4.1 atau lebih baru). Contoh di bawah ini:

$ cat test3.sh
#!/bin/bash
PS4='LINENO:'

set -x
echo "hello World"
mkdiir testing

Anda dapat dengan mudah melihat nomor baris saat membaca kesalahan:

$ /test3.sh
5: echo 'hello World'
hello World
6: mkdiir testing
./test3.sh: line 6: mkdiir: command not found

[ Dapatkan ebook gratis ini:Mengelola kluster Kubernetes Anda untuk boneka. ]

Menutup

Mengelola kesalahan adalah keterampilan utama bagi administrator saat menulis skrip. Kiat-kiat ini akan membantu membuat hidup Anda lebih mudah saat memecahkan masalah skrip Bash atau bahkan perintah umum.


Linux
  1. Menggunakan Bash untuk otomatisasi

  2. Pelajari penanganan kesalahan Bash dengan contoh

  3. Gunakan Ekstensi .sh Atau .bash Untuk Skrip Bash?

  1. Bash:Kesalahan Sintaks Dekat Token Tak Terduga `}'?

  2. Menggunakan Perintah Tidur Linux di Skrip Bash

  3. Jalankan semua skrip shell di folder

  1. Jalankan Skrip Bash Saat Memasuki Direktori?

  2. Typeset -a Apakah Memberikan Kesalahan Dalam Script?

  3. Kesalahan Skrip Bash:Ekspresi Integer Diharapkan?