Cara melakukan sintaks memeriksa mode debugging di skrip shell

Cara melakukan sintaks memeriksa mode debugging di skrip shell

Kami Memulai Seri Debugging Skrip Shell dengan menjelaskan berbagai opsi debugging dan cara mengaktifkan mode debugging skrip shell.

Setelah menulis skrip shell Anda, disarankan agar kami secara praktis memeriksa sintaks dalam skrip sebelum menjalankannya, sebagai lawan dari melihat output mereka untuk mengonfirmasi bahwa mereka bekerja dengan benar.

Di bagian seri ini, kami akan melalui cara menggunakan Sintaks Pemeriksaan Mode Debugging. Ingat kami menjelaskan berbagai opsi debugging di bagian pertama dari seri ini dan di sini, kami akan menggunakannya untuk melakukan skrip debugging.

Mengaktifkan mode debugging verbose

Sebelum kita pindah ke fokus utama panduan ini, mari kita jelajahi secara singkat mode verbose. Itu diaktifkan oleh -v opsi debugging, yang memberitahu shell untuk menampilkan semua baris dalam skrip saat mereka dibaca.

Untuk menunjukkan cara kerjanya, di bawah ini adalah skrip shell sampel untuk batch mengonversi gambar png ke format jpg.

Ketik (atau salin dan tempel) dalam file.

#!/bin/bash #convert untuk gambar di *.png; do convert "$ image" "$ Image%.png.JPG "Echo" Image $ Image dikonversi menjadi $ Image%.png.jpg "selesai keluar 0 

Kemudian simpan file dan buat skrip dapat dieksekusi menggunakan perintah di bawah ini:

$ chmod +x skrip.SH 

Kita dapat memohon skrip dan menampilkan semua baris di dalamnya saat dibaca oleh shell seperti itu:

$ Bash -V Script.SH 
Tampilkan semua baris dalam skrip shell

Mengaktifkan Sintaks Memeriksa Mode Debugging di Skrip Shell

Kembali ke topik penekanan kita, -N Mengaktifkan Mode Pemeriksaan Sintaks. Ini menginstruksikan shell untuk pada dasarnya membaca semua perintah, namun tidak menjalankannya, itu (shell) hanya memeriksa sintaks yang digunakan.

Jika ada kesalahan dalam skrip shell Anda, shell akan menghasilkan kesalahan pada terminal, jika tidak, itu tidak menunjukkan apa -apa.

Sintaks untuk Mengaktifkan Pemeriksaan Sintaks adalah sebagai berikut:

$ bash -n skrip.SH 

Karena sintaks dalam skrip benar, perintah di atas tidak akan menampilkan output apapun. Karena itu, mari kita coba hapus Selesai Kata yang menutup loop untuk dan lihat apakah itu menunjukkan kesalahan:

Di bawah ini adalah skrip shell yang dimodifikasi untuk batch mengonversi gambar png ke format jpg yang berisi bug.

#!/bin/bash #script dengan bug #convert untuk gambar di *.png; do convert "$ image" "$ Image%.png.JPG "Echo" Image $ Image dikonversi menjadi $ Image%.png.jpg "keluar 0 

Simpan file, lalu jalankan saat melakukan sintaks yang memeriksa di dalamnya:

$ bash -n skrip.SH 
Periksa sintaks dalam skrip shell

Dari output di atas, kita dapat melihat bahwa ada masalah sintaks dengan skrip kami, loop untuk tidak ada penutupan Selesai kata kata kunci. Dan shell mencarinya sampai akhir file dan begitu tidak menemukannya (Selesai), shell mencetak kesalahan sintaks:

naskah.SH: Baris 11: Kesalahan Sintaks: Akhir file yang tidak terduga 

Kami juga dapat menggabungkan mode verbose dan sintaks dengan mode pemeriksaan bersama -sama:

$ bash -vn skrip.SH 
Aktifkan Verbose dan Sintaks Pemeriksaan dalam Script

Atau, kami dapat mengaktifkan pemeriksaan sintaks dengan memodifikasi baris pertama skrip di atas seperti pada contoh berikutnya.

#!/bin/bash -n #Baltering baris pertama skrip untuk mengaktifkan sintaks memeriksa #convert untuk gambar di *.png; do convert "$ image" "$ Image%.png.JPG "Echo" Image $ Image dikonversi menjadi $ Image%.png.jpg "keluar 0 

Seperti sebelumnya, simpan file dan jalankan saat melakukan pemeriksaan sintaks:

$ ./naskah.SH naskah.SH: Baris 12: Kesalahan Sintaks: Akhir file yang tidak terduga 

Selain itu, kami dapat menggunakan perintah set bawa shell untuk mengaktifkan mode debugging dalam skrip di atas.

Dalam contoh di bawah ini, kami hanya memeriksa sintaksis untuk loop dalam skrip kami.

#!/bin/bash #using set shell shell command built -in untuk mengaktifkan debugging #convert #Enable debugging set -n untuk gambar di *.png; do convert "$ image" "$ Image%.png.JPG "Echo" Image $ Image dikonversi menjadi $ Image%.png.jpg "#disable debugging set +n keluar 0 

Sekali lagi, simpan file dan adahkan skrip:

$ ./naskah.SH 

Singkatnya, kita harus selalu memastikan bahwa kita secara sintaksis memeriksa skrip shell kita untuk menangkap kesalahan apa pun sebelum menjalankannya.

Untuk mengirimi kami pertanyaan atau umpan balik tentang panduan ini, gunakan formulir respons di bawah ini. Di bagian ketiga dari seri ini, kami akan pindah untuk menjelaskan dan menggunakan mode debugging penelusuran shell.