Cara Melakukan Sintaks Memeriksa Mod Debugging Dalam Skrip Shell

Cara Melakukan Sintaks Memeriksa Mod Debugging Dalam Skrip Shell

Kami Memulakan Siri Debugging Skrip Shell dengan menerangkan pilihan debugging yang berbeza dan bagaimana untuk membolehkan mod debugging skrip shell.

Setelah menulis skrip shell anda, disarankan agar kami dapat memeriksa sintaks dalam skrip sebelum menjalankannya, berbanding dengan melihat output mereka untuk mengesahkan bahawa mereka bekerja dengan betul.

Di bahagian siri ini, kami akan melalui cara menggunakan mod penyahpepijatan sintaks. Ingat kami menjelaskan pilihan penyahpepijatan yang berbeza di bahagian pertama siri ini dan di sini, kami akan menggunakannya untuk melakukan debugging skrip.

Membolehkan mod debugging verbose

Sebelum kita beralih ke tumpuan utama panduan ini, marilah kita meneroka secara ringkas mod verbose. Ia didayakan oleh -v Pilihan Debugging, yang memberitahu shell untuk memaparkan semua baris dalam skrip semasa mereka dibaca.

Untuk menunjukkan bagaimana ini berfungsi, di bawah adalah skrip shell sampel untuk mengikat imej PNG ke format jpg.

Taip (atau salin dan tampal) dalam fail.

#!/bin/bash #convert untuk imej di *.png; Adakah Tukar "$ Imej" "$ Image%.png.JPG "echo" imej $ imej ditukar menjadi $ image%.png.jpg "selesai 0 

Kemudian simpan fail dan buat skrip boleh dilaksanakan menggunakan arahan di bawah:

$ chmod +x skrip.sh 

Kami boleh memanggil skrip dan memaparkan semua baris di dalamnya kerana ia dibaca oleh shell seperti SO:

$ bash -v skrip.sh 
Paparkan semua baris dalam skrip shell

Membolehkan Mod Debugging Sintaks dalam Skrip Shell

Kembali ke topik penekanan kami, -n mengaktifkan mod pemeriksaan sintaks. Ia mengarahkan shell pada dasarnya membaca semua arahan, namun tidak melaksanakannya, ia (shell) hanya meneliti sintaks yang digunakan.

Sekiranya terdapat kesilapan dalam skrip shell anda, shell akan mengeluarkan ralat di terminal, jika tidak, ia tidak memaparkan apa -apa.

Sintaks untuk mengaktifkan pemeriksaan sintaks adalah seperti berikut:

$ bash -n skrip.sh 

Kerana sintaks dalam skrip betul, arahan di atas tidak akan memaparkan sebarang output. Oleh itu, marilah kita cuba membuangnya selesai perkataan yang menutup gelung dan lihat apakah ia menunjukkan ralat:

Berikut adalah skrip shell yang diubahsuai untuk mengikat imej PNG ke format JPG yang mengandungi pepijat.

#!/bin/bash #script dengan bug #convert untuk imej di *.png; Adakah Tukar "$ Imej" "$ Image%.png.JPG "echo" imej $ imej ditukar menjadi $ image%.png.JPG "Keluar 0 

Simpan fail, kemudian jalankan semasa melakukan pemeriksaan sintaks di dalamnya:

$ bash -n skrip.sh 
Semak sintaks dalam skrip shell

Dari output di atas, kita dapat melihat bahawa terdapat masalah sintaks dengan skrip kami, untuk gelung hilang penutupan selesai Kata kata kunci. Dan shell mencarinya sehingga akhir fail dan sekali ia tidak menemuinya (selesai), shell mencetak ralat sintaks:

Skrip.SH: Baris 11: Ralat Sintaks: Akhir Fail yang Tidak Dijangka 

Kita juga boleh menggabungkan mod verbose dan mod pemeriksaan sintaks bersama -sama:

$ bash -vn skrip.sh 
Dayakan pemeriksaan verbose dan sintaks dalam skrip

Sebagai alternatif, kita boleh mengaktifkan pemeriksaan sintaks dengan mengubah suai baris pertama skrip di atas seperti dalam contoh seterusnya.

#!/bin/bash -n #Altering baris pertama skrip untuk membolehkan sintaks menyemak #convert untuk imej di *.png; Adakah Tukar "$ Imej" "$ Image%.png.JPG "echo" imej $ imej ditukar menjadi $ image%.png.JPG "Keluar 0 

Seperti dahulu, simpan fail dan jalankan semasa melakukan pemeriksaan sintaks:

$ ./skrip.sh Skrip.SH: Baris 12: Ralat Sintaks: Akhir Fail yang Tidak Dijangka 

Di samping itu, kami boleh menggunakan arahan terbina dalam set shell untuk membolehkan mod debugging dalam skrip di atas.

Dalam contoh di bawah, kami hanya menyemak sintaks untuk gelung dalam skrip kami.

#!/bin/bash #using set shell command terbina dalam untuk membolehkan debugging #convert #enable debugging set -n untuk imej dalam *.png; Adakah Tukar "$ Imej" "$ Image%.png.JPG "echo" imej $ imej ditukar menjadi $ image%.png.jpg "#disable debugging set +n exit 0 

Sekali lagi, simpan fail dan hubungi skrip:

$ ./skrip.sh 

Ringkas.

Untuk menghantar sebarang pertanyaan atau maklum balas mengenai panduan ini, gunakan borang tindak balas di bawah. Di bahagian ketiga siri ini, kami akan bergerak untuk menjelaskan dan menggunakan mod debugging shell.