Πώς να εντοπίσετε σφάλματα σεναρίου bash;

How Debug Bash Script




Κάθε πρόγραμμα πρέπει να είναι απαλλαγμένο από σφάλματα πριν φτάσει στους καταναλωτές. Οι προγραμματιστές λογισμικού προσπαθούν να κάνουν τα προγράμματα λογισμικού χωρίς σφάλματα. Αλλά είναι δύσκολο να κάνεις έναν κωδικό άψογο όταν υπάρχουν χιλιάδες γραμμές. Ο εντοπισμός σφαλμάτων είναι μια συνεχής διαδικασία. βοηθά στην άμεση ανίχνευση σφαλμάτων, τη συλλογή πολύτιμων πληροφοριών σχετικά με τον κώδικα και την εξάλειψη των περιττών κομματιών κώδικα.

Όλες οι γλώσσες προγραμματισμού έχουν μερικές κοινές και λίγες ξεχωριστές προσεγγίσεις για την εύρεση σφαλμάτων. Για παράδειγμα, τα προγράμματα εντοπισμού σφαλμάτων μπορούν να χρησιμοποιηθούν για την γρήγορη κατάργηση των σφαλμάτων. Ενώ το σενάριο κελύφους δεν έχει κάποιο συγκεκριμένο εργαλείο για τον εντοπισμό σφαλμάτων του κώδικα. Αυτή η εγγραφή αφορά τη συζήτηση διαφόρων τεχνικών εντοπισμού σφαλμάτων που μπορούν να χρησιμοποιηθούν για να γίνει η δέσμη ενεργειών bash χωρίς σφάλματα. Πριν εμβαθύνουμε στις μεθόδους, ας έχουμε μια βασική κατανόηση των κελύφους και της δέσμης ενεργειών κελύφους:







Τι είναι το κέλυφος στο Linux;

Όταν εκκινείτε τον υπολογιστή σας, ο πυρήνας λαμβάνει πληροφορίες σχετικά με το συνημμένο υλικό και επιτρέπει την αλληλεπίδραση άλλων συνημμένων εξαρτημάτων. Εκτός από αυτό, διαχειρίζεται τη μνήμη, την CPU και αναγνωρίζει κάθε νέο περιφερειακό. Συνολικά, ένας πυρήνας είναι η ραχοκοκαλιά κάθε λειτουργικού συστήματος. Έχετε σκεφτεί ποτέ να αλληλεπιδράσετε απευθείας με τον πυρήνα, να του δώσετε εντολή να εκτελέσει μια συγκεκριμένη εργασία; Είναι καν εφικτό να το κάνουμε αυτό; Απολύτως! Με τη βοήθεια ενός κελύφους, ενός προγράμματος υπολογιστή με διαδραστική διεπαφή, ο καθένας μπορεί να χειριστεί τον πυρήνα. Το κέλυφος επιτρέπει στους ανθρώπους να αλληλεπιδρούν με τον πυρήνα και να του δίνουν εντολή να εκτελέσει οποιαδήποτε εργασία.



Στο Unix, υπάρχουν δύο κύρια κελύφη Κέλυφος Bourne και C κέλυφος Το Και οι δύο αυτοί τύποι έχουν τις υποκατηγορίες τους. Διαφορετικοί τύποι κοχυλιών Bourne είναι Κέλυφος Korn (ksh), κέλυφος Almquist (τέφρα), Bourne πάλι κέλυφος (bash), και Κέλυφος Z (zsh) Το Ταυτόχρονα, το κέλυφος C έχει τις δικές του υποκατηγορίες όπως C κέλυφος (csh) και Κέλυφος TENEX C (tcsh) Το Όπως προαναφέρθηκε, από όλα τα κελύφη, Bash (Bourne again shell) είναι το πιο διαδεδομένο κέλυφος και βγαίνει από το κουτί σε πολλές διανομές Linux λόγω της αποτελεσματικότητας και της φιλικότητας προς το χρήστη.



Το Bash είναι το προεπιλεγμένο κέλυφος πολλών διανομών Linux και χρησιμοποιείται ευρέως από εκατομμύρια χρήστες Linux. Είναι τόσο ποικίλο και επιδραστικό που μπορεί να εκτελέσει κάθε εργασία που εκτελείτε συνήθως σε εφαρμογές που βασίζονται σε GUI. Μπορείτε να επεξεργαστείτε αρχεία, να διαχειριστείτε αρχεία, να δείτε φωτογραφίες, να ακούσετε μουσική, να παίξετε βίντεο και πολλά άλλα.





Τι είναι ένα σενάριο Shell:

Καθώς μάθαμε τη βασική ιδέα του κελύφους, τώρα ας προχωρήσουμε προς τη δέσμη ενεργειών κελύφους. Το σενάριο κελύφους είναι ένα πρόγραμμα υπολογιστή που εκτελεί πολλαπλές εντολές σε ένα κέλυφος που λειτουργεί ως διερμηνέας για την εκτέλεση μιας συγκεκριμένης λειτουργίας. Όπως συζητήθηκε παραπάνω, υπάρχουν 2 συγκεκριμένοι τύποι κελυφών. Ωστόσο, αυτός ο οδηγός εστιάζει στο κέλυφος Bourne Again (Bash).
Τι είναι λοιπόν το σενάριο bash; Στο Linux, όλες οι εντολές bash αποθηκεύονται στο /usr /bin και /bin φακέλους. Για παράδειγμα, κάθε φορά που εκτελείτε μια εντολή, πραγματοποιεί αναζήτηση bash εάν υπάρχει ή όχι στον κατάλογο. Η εντολή εκτελείται αν εντοπίσει στους καταλόγους άλλος δίνει σφάλμα.

Τι θα λέγατε για την εκτέλεση μιας εργασίας που χρειάζεται πολλές εντολές για εκτέλεση στο τερματικό; Σε αυτή τη συγκεκριμένη κατάσταση, το σενάριο bash μπορεί να σας βοηθήσει. Η δέσμη ενεργειών Bash είναι μια μορφή δέσμης ενεργειών κελύφους που σας επιτρέπει να κάνετε προγράμματα για την εκτέλεση πολλών εντολών bash για την εκτέλεση μιας συγκεκριμένης εργασίας.



Τι είναι τα σφάλματα στο σενάριο bash:

Ενώ εργάζεστε με δέσμες ενεργειών bash ή με οποιαδήποτε άλλη γλώσσα προγραμματισμού, αντιμετωπίζετε πολλά σφάλματα. Ένα σφάλμα είναι ένα σφάλμα ή ένα σφάλμα στο πρόγραμμα που μπορεί να προκαλέσει λανθασμένη συμπεριφορά του προγράμματος.

Κάθε γλώσσα προγραμματισμού έχει τη δική της διαδικασία εύρεσης σφαλμάτων. ομοίως, το bash έχει επίσης πολλές ενσωματωμένες επιλογές για τον εντοπισμό σφαλμάτων σε ένα πρόγραμμα τερματικού.

Η διαχείριση σφαλμάτων και ο εντοπισμός σφαλμάτων ενός προγράμματος δεν είναι παρά μια ταλαιπωρία. Είναι μια χρονοβόρα δουλειά και μπορεί να επιδεινωθεί εάν δεν γνωρίζετε τα σωστά εργαλεία για να διορθώσετε το πρόγραμμά σας. Αυτή η εγγραφή είναι ένας πλήρης οδηγός σχετικά με τον εντοπισμό σφαλμάτων σεναρίων bash για να κάνετε το σενάριό σας χωρίς σφάλματα. Ας ξεκινήσουμε λοιπόν:

Πώς να εντοπίσετε σφάλματα σεναρίου bash:

Όταν εργάζεστε σε μεγάλα προγράμματα προγραμματισμού, αντιμετωπίζετε πολλά σφάλματα ή σφάλματα. Ο εντοπισμός σφαλμάτων σε ένα πρόγραμμα μπορεί μερικές φορές να είναι περίπλοκος. Οι προγραμματιστές συνήθως χρησιμοποιούν εργαλεία εντοπισμού σφαλμάτων και πολλοί συντάκτες κώδικα βοηθούν επίσης στην εύρεση σφαλμάτων επισημαίνοντας τη σύνταξη.

Υπάρχουν διάφορα εργαλεία στο Linux για τον εντοπισμό σφαλμάτων κωδικών, για παράδειγμα, GNU Debugger aka gdb. Εργαλεία όπως το GDB είναι χρήσιμα για γλώσσες προγραμματισμού που μεταγλωττίζονται σε δυαδικά αρχεία. Δεδομένου ότι το bash είναι μια απλή ερμηνευμένη γλώσσα, δεν χρειάζεται βαριά εργαλεία για να το διορθώσετε.

Υπάρχουν διάφορες παραδοσιακές τεχνικές για τον εντοπισμό σφαλμάτων σε έναν κώδικα δέσμης ενεργειών, και μία από αυτές είναι η προσθήκη Ισχυρισμοί. Οι ισχυρισμοί είναι συνθήκες που προστίθενται στα προγράμματα για τον έλεγχο συγκεκριμένων συνθηκών και την εκτέλεση του προγράμματος ανάλογα. Είναι μια αμυντική τεχνική που βοηθά στην εύρεση σφαλμάτων και στις δοκιμές επίσης. Μπορείτε να βρείτε πολλά εργαλεία που βοηθούν στην προσθήκη ισχυρισμών σε σενάρια bash.

Λοιπόν, η προσθήκη ισχυρισμών είναι μία από τις παλιές παραδοσιακές τεχνικές. Υπάρχουν διαθέσιμα σύνολα σημαιών/επιλογών στο bash για εντοπισμό σφαλμάτων σεναρίου bash. Αυτές οι επιλογές μπορούν να προστεθούν μαζί με το shebang στα σενάρια ή να προστεθούν κατά την εκτέλεση του προγράμματος στο τερματικό. Τα θέματα που θα ασχοληθούμε παρατίθενται παρακάτω:

  1. Τρόπος εντοπισμού σφαλμάτων σεναρίου bash ενεργοποιώντας ρητό -v επιλογή
  2. Πώς να εντοπίσετε σφάλματα σεναρίου bash χρησιμοποιώντας xtrace -x επιλογή
  3. Πώς να εντοπίσετε σφάλματα σεναρίου bash χρησιμοποιώντας noexec -n επιλογή
  4. Πώς να αναγνωρίσετε το μη καθορισμένες μεταβλητές κατά τον εντοπισμό σφαλμάτων σεναρίου bash
  5. Πώς να εντοπίσετε σφάλματα στο συγκεκριμένο μέρος του σεναρίου bash
  6. Πώς να εντοπίσετε σφάλματα σεναρίου bash χρησιμοποιώντας το παγίδα εντολή
  7. Πώς να εντοπίσετε σφάλματα σεναρίου bash εξαλείφοντας σφαιροποίηση αρχείων χρησιμοποιώντας το -φά επιλογή
  8. Πως να συνδυασμός επιλογές εντοπισμού σφαλμάτων για εντοπισμό σφαλμάτων σεναρίου κελύφους
  9. Πως να ανακατεύθυνση αναφοράς εντοπισμού σφαλμάτων σε ένα αρχείο

Ας ελέγξουμε λοιπόν διάφορες τεχνικές στο bash για εντοπισμό σφαλμάτων σεναρίου bash:

1. Τρόπος εντοπισμού σφαλμάτων σεναρίου bash ενεργοποιώντας την πολυσήμαντη επιλογή -v:

Μία από τις ευκολότερες προσεγγίσεις για τον εντοπισμό σφαλμάτων στο σενάριο bash είναι η χρήση του -v επιλογή, επίσης γνωστή ως λεκτική. Η επιλογή μπορεί να προστεθεί με το shebang ή να τοποθετηθεί ρητά με το όνομα του αρχείου σεναρίου κατά την εκτέλεσή του. Η λεπτομερής επιλογή θα εκτελέσει και θα εκτυπώσει κάθε γραμμή του κώδικα ως διαδικασία από τον διερμηνέα. Ας το καταλάβουμε με ένα παράδειγμα σεναρίου bash:

#! /bin/bash
πέταξε έξω 'Εισαγάγετε τον αριθμό 1'
ανάγνωσηνούμερο 1
πέταξε έξω 'Εισαγάγετε τον αριθμό 2'
ανάγνωσηνούμερο 2
αν [ '$ number1' -γτ '$ number2' ]
τότε
πέταξε έξω 'Ο αριθμός 1 είναι μεγαλύτερος από τον αριθμό 2'
elif [ '$ number1' -ισοδύναμο '$ number2' ]
τότε
πέταξε έξω 'Ο αριθμός 1 είναι ίσος με τον αριθμό 2'
αλλού
πέταξε έξω 'Ο αριθμός 2 είναι μεγαλύτερος από τον αριθμό 1'
είναι

Ο παραπάνω κωδικός λαμβάνει δύο αριθμούς από τον χρήστη και στη συνέχεια εκτελεί ορισμένες προτάσεις υπό όρους για να ελέγξει εάν ο αριθμός είναι πιο σημαντικός, μικρότερος ή ίσος με τον άλλο εισαγόμενο αριθμό. Αν και οποιοσδήποτε επεξεργαστής κειμένου μπορεί να χρησιμοποιηθεί για δέσμες ενεργειών, χρησιμοποιώ τον επεξεργαστή Vim. Το Vim είναι ένας ισχυρός, πλούσιος σε χαρακτηριστικά επεξεργαστής που επισημαίνει τη σύνταξη των σεναρίων bash και μειώνει τις πιθανότητες σφαλμάτων σύνταξης. Εάν δεν έχετε πρόγραμμα επεξεργασίας Vim, αποκτήστε το εκτελώντας την παρακάτω εντολή:

$sudoκατάλληλοςεγκαθιστώ ήρθα

Δημιουργήστε ένα αρχείο σεναρίου bash χρησιμοποιώντας:

$ήρθαb_script.sh

Εάν είστε νέοι στον επεξεργαστή Vim, σας συνιστώ να μάθετε πώς να χρησιμοποιήσετε τον επεξεργαστή vim πριν προχωρήσετε.

Τώρα, πίσω στο σενάριο, εκτελέστε το σενάριο χρησιμοποιώντας -v επιλογή:

$κτυπώ δυνατά -vb_script.sh

Στην παραπάνω έξοδο φαίνεται ότι κάθε γραμμή του σεναρίου εκτυπώνεται στο τερματικό καθώς επεξεργάζεται ο διερμηνέας. Σημειώστε ότι το σενάριο θα σταματήσει να λαμβάνει πληροφορίες από τον χρήστη και στη συνέχεια θα επεξεργαστεί την επόμενη γραμμή του σεναρίου. Όπως συζητήθηκε παραπάνω ότι το -v η επιλογή μπορεί να τοποθετηθεί μετά το shebang όπως φαίνεται στα παρακάτω:

#! / bin / bash -v

Ομοίως, η λεκτική σημαία μπορεί επίσης να προστεθεί στην επόμενη γραμμή του shebang χρησιμοποιώντας το σειρά εντολή:

#! /bin/bash
σειρά -v

Οποιαδήποτε από τις μεθόδους που συζητήθηκαν παραπάνω μπορεί να ενεργοποιήσει λεπτομερή.

2 Τρόπος εντοπισμού σφαλμάτων σεναρίου bash χρησιμοποιώντας την επιλογή xtrace -x:

Το ίχνος εκτέλεσης, γνωστό και ως xtrace είναι μια έξυπνη και χρήσιμη επιλογή εντοπισμού σφαλμάτων, ειδικά για τον εντοπισμό λογικών σφαλμάτων. Τα λογικά σφάλματα συνήθως σχετίζονται με μεταβλητές και εντολές. Για να ελέγξουμε την κατάσταση της μεταβλητής κατά την εκτέλεση του σεναρίου, χρησιμοποιούμε το επιλογή. Τώρα πάλι, τρέξτε το b_script.sh αρχείο με το σημαία:

$κτυπώ δυνατά b_script.sh

Η έξοδος δείχνει ρητά την τιμή κάθε μεταβλητής κατά τη διαδικασία εκτέλεσης. Και πάλι, το μπορεί να χρησιμοποιηθεί δίπλα στο shebang και μετά τη γραμμή shebang χρησιμοποιώντας την εντολή set. Το xtrace βάζει το σύμβολο + σε κάθε γραμμή του σεναρίου.

3 Τρόπος εντοπισμού σφαλμάτων σεναρίου bash χρησιμοποιώντας την επιλογή noexec -n:

Τα συντακτικά λάθη είναι μια από τις κύριες αιτίες σφαλμάτων. Για να εντοπίσουμε συντακτικά το σενάριο bash, χρησιμοποιούμε noexec λειτουργία (χωρίς εκτέλεση). Η επιλογή που χρησιμοποιείται για τη λειτουργία noexec είναι Θα εμφανίζει μόνο τα σφάλματα σύνταξης του κώδικα αντί να τον εκτελεί. Μια πολύ πιο ασφαλής προσέγγιση για τον εντοπισμό σφαλμάτων στον κώδικα. Ας εκτελέσουμε b_script.sh πάλι με το επιλογή:

$κτυπώ δυνατά b_script.sh

Δεν θα υπάρχει εκτέλεση κώδικα εάν δεν υπάρχει σφάλμα σύνταξης. Τώρα, ας τροποποιήσουμε τον κωδικό μας:

#! /bin/bash

πέταξε έξω 'Εισαγάγετε τον αριθμό 1'
ανάγνωσηνούμερο 1
πέταξε έξω 'Εισαγάγετε τον αριθμό 2'
ανάγνωσηνούμερο 2
αν [ '$ number1' -γτ '$ number2' ]
τότε
πέταξε έξω 'Ο αριθμός 1 είναι μεγαλύτερος από τον αριθμό 2'
elif [ '$ number1' -ισοδύναμο '$ number2' ]
#τότε
πέταξε έξω 'Ο αριθμός 1 είναι ίσος με τον αριθμό 2'
αλλού
πέταξε έξω 'Ο αριθμός 2 είναι μεγαλύτερος από τον αριθμό 1'
είναι

Σχολιάζω τότε μετά elif Το Τώρα, με -n εκτελέστε b_script.sh γραφή:

$κτυπώ δυνατά b_script.sh

Όπως αναμενόταν, εντόπισε σαφώς το σφάλμα και το εμφάνισε στο τερματικό.

4 Πώς να προσδιορίσετε τις μη καθορισμένες μεταβλητές κατά τον εντοπισμό σφαλμάτων σεναρίου bash:

Είναι συνηθισμένο να κάνετε λάθος κατά τη σύνταξη ενός κώδικα. Συχνά, πληκτρολογείτε λάθος μια μεταβλητή, η οποία δεν αφήνει τον κώδικα να εκτελεστεί. Για να εντοπίσουμε ένα τέτοιο σφάλμα, χρησιμοποιούμε το -u επιλογή. Ας τροποποιήσουμε ξανά τον κώδικα:

#! /bin/bash
πέταξε έξω 'Εισαγάγετε τον αριθμό 1'
ανάγνωσηνούμερο 1
πέταξε έξω 'Εισαγάγετε τον αριθμό 2'
ανάγνωσηνούμερο 2
αν [ '$ num1' -γτ '$ number2' ]
τότε
πέταξε έξω 'Ο αριθμός 1 είναι μεγαλύτερος από τον αριθμό 2'
elif [ '$ number1' -ισοδύναμο '$ number2' ]
τότε
πέταξε έξω 'Ο αριθμός 1 είναι ίσος με τον αριθμό 2'
αλλού
πέταξε έξω 'Ο αριθμός 2 είναι μεγαλύτερος από τον αριθμό 1'
είναι

Κατά την πρώτη αν υπό όρους δήλωση, μετονόμασα σε νούμερο 1 μεταβλητή σε num1 Το Τώρα num1 είναι μια μη καθορισμένη μεταβλητή. Τώρα εκτελέστε το σενάριο:

$κτυπώ δυνατά -ub_script.sh

Η έξοδος έχει προσδιορίσει και εμφανίζει ρητά το όνομα μιας μη καθορισμένης μεταβλητής.

5. Πώς να εντοπίσετε σφάλματα στο συγκεκριμένο μέρος του σεναρίου bash:

Η λειτουργία xtrace επεξεργάζεται κάθε γραμμή του κώδικα και δίνει έξοδο. Ωστόσο, η εύρεση σφαλμάτων σε έναν μεγάλο κώδικα θα ήταν χρονοβόρα αν γνωρίζουμε ήδη ποιο μέρος μπορεί να προκαλέσει το σφάλμα. Ευτυχώς, το xtrace σάς επιτρέπει επίσης να εντοπίσετε σφάλματα σε ένα συγκεκριμένο τμήμα του κώδικα, το οποίο μπορεί να επιτευχθεί χρησιμοποιώντας το σειρά εντολή. Θέση σετ -x στην αρχή του τμήματος που πρέπει να διορθωθεί και στη συνέχεια σετ +x στο τέλος. Για παράδειγμα, θέλω να διορθώσω τις δηλώσεις υπό όρους του b_script.sh , οπότε θα επισυνάψω όλες τις δηλώσεις υπό όρους σετ -x και σετ +x επιλογές όπως φαίνεται στον παρακάτω κώδικα:

#! /bin/bash
πέταξε έξω 'Εισαγάγετε τον αριθμό 1'
ανάγνωσηνούμερο 1
πέταξε έξω 'Εισαγάγετε τον αριθμό 2'
ανάγνωσηνούμερο 2
σειρά
αν [ '$ αριθμός' -γτ '$ number2' ]
τότε
πέταξε έξω 'Ο αριθμός 1 είναι μεγαλύτερος από τον αριθμό 2'
elif [ '$ number1' -ισοδύναμο '$ number2' ]
τότε
πέταξε έξω 'Ο αριθμός 1 είναι ίσος με τον αριθμό 2'
αλλού
πέταξε έξω 'Ο αριθμός 2 είναι μεγαλύτερος από τον αριθμό 1'
είναι
σειρά+ x

Τώρα, εκτελέστε το σενάριο χρησιμοποιώντας bash b_script.sh Το

Η έξοδος εντοπίζει σφάλματα μόνο εάν οι συνθήκες όπως καθορίζονται.

6. Πώς να εντοπίσετε σφάλματα σεναρίου bash χρησιμοποιώντας την εντολή trap:

Εάν το σενάριό σας είναι περίπλοκο, τότε υπάρχουν πιο περίπλοκες τεχνικές, καθώς και για τον εντοπισμό σφαλμάτων. Ένα από αυτά είναι το παγίδα εντολή. ο παγίδα εντολή πιάνει τα σήματα και εκτελεί μια εντολή όταν προκύψει μια συγκεκριμένη κατάσταση. Η εντολή μπορεί να είναι σήμα ή συνάρτηση. Έχω δημιουργήσει ένα άλλο σενάριο με το όνομα sum_script.sh :

#! /bin/bash
παγίδα Γραμμή 'echo' $ {LINENO}: Ο πρώτος αριθμός είναι $ number1, ο δεύτερος αριθμός είναι $ number2 και το άθροισμα είναι $ sum ''DEBUG
πέταξε έξω 'Εισαγάγετε τον πρώτο αριθμό'
ανάγνωσηνούμερο 1
πέταξε έξω 'Εισαγάγετε τον δεύτερο αριθμό'
ανάγνωσηνούμερο 2
άθροισμα= $[αριθμός 1 + αριθμός 2]
πέταξε έξω 'το άθροισμα είναι$ άθροισμα'

ο παγίδα εντολή με DEBUG σήμα εμφανίζει την κατάσταση των μεταβλητών νούμερο 1 , νούμερο 2 και άθροισμα μετά την εκτέλεση κάθε γραμμής όπως φαίνεται στην παρακάτω εικόνα εξόδου:

Τα κίτρινα μπλοκ είναι κενά διαστήματα επειδή ο χρήστης δεν έχει εισαγάγει ακόμη είσοδο. αυτοί οι χώροι θα γεμίσουν καθώς ο χρήστης εισάγει τιμές. Αυτή η μέθοδος είναι επίσης πολύ χρήσιμη για τον εντοπισμό σφαλμάτων σεναρίων bash.

7. Πώς να εντοπίσετε σφάλματα σεναρίου bash, εξαλείφοντας τη σφαιροποίηση αρχείων χρησιμοποιώντας την επιλογή -f:

Η σφαιροποίηση αρχείων είναι μια διαδικασία εύρεσης των αρχείων με χαρακτήρες μπαλαντέρ, δηλ. * και ; Το Σε πολλές περιπτώσεις, δεν χρειάζεται να επεκτείνετε αρχεία κατά τον εντοπισμό σφαλμάτων. Σε τέτοιες περιπτώσεις, μπορείτε να αποκλείσετε τη σφαιροποίηση του αρχείου χρησιμοποιώντας το -φά επιλογή. Ας το καταλάβουμε με ένα σενάριο fglobe_script.sh :

#! /bin/bash
πέταξε έξω 'Εμφάνιση όλων των αρχείων κειμένου.'
ls *.κείμενο

Ο παραπάνω κώδικας θα εμφανίσει όλα τα αρχεία κειμένου στον τρέχοντα κατάλογο, εκτελέστε:

$κτυπώ δυνατάfglobe_script.sh

Για να απενεργοποιήσετε τη σφαιροποίηση αρχείων, χρησιμοποιήστε το -φά επιλογή:

$κτυπώ δυνατά -φάfglobe_script.sh

Ομοίως, μπορείτε να το χρησιμοποιήσετε με το shebang και με το σειρά εντολή επίσης:

#! /bin/bash
πέταξε έξω 'Εμφάνιση όλων των αρχείων κειμένου.'
ls *.κείμενο
σειρά -φά
πέταξε έξω 'Εμφάνιση όλων των αρχείων κειμένου'
ls *.κείμενο
σειρά+στ

Τώρα, τρέξτε bash fglobe_script.sh:

Το τμήμα που περικλείεται με set -f/set +f Οι επιλογές δεν επεξεργάστηκαν εντολές με χαρακτήρες μπαλαντέρ.

8. Πώς να συνδυάσετε τις επιλογές εντοπισμού σφαλμάτων για να εντοπίσετε το σενάριο κελύφους εντοπισμού σφαλμάτων:

Χρησιμοποιούμε μόνο μία επιλογή στις παραπάνω τεχνικές εντοπισμού σφαλμάτων, αλλά μπορούμε να συνδυάσουμε διάφορες επιλογές για καλύτερη κατανόηση. Ας εφαρμόσουμε και -v επιλογές στο sum_script.sh γραφή. Χρησιμοποιώ το sum_script.sh γραφή.

#! /bin/bash
πέταξε έξω 'Εισαγάγετε τον πρώτο αριθμό'
ανάγνωσηνούμερο 1
πέταξε έξω 'Εισαγάγετε τον δεύτερο αριθμό'
ανάγνωσηνούμερο 2
άθροισμα= $[αριθμός 1 + αριθμός 2]
πέταξε έξω 'το άθροισμα είναι$ άθροισμα'

Τώρα εκτελέστε:

$κτυπώ δυνατά -xvsum_script.sh

Και τα δυο και -v οι έξοδοι συνδυάζονται, όπως εμφανίζεται στην εικόνα εξόδου. Ομοίως, μπορούμε επίσης να συνδυάσουμε το -u επιλογή με λεπτομερή -v για ανίχνευση σφαλμάτων. Αντικαθιστώ το νούμερο 1 μεταβλητή με σε ένα στην έκτη γραμμή του σεναρίου:

#! /bin/bash
είναι$ number2καιάθροισμαείναι$ άθροισμα'' DEBUG
πέταξε έξω '
Εισαγάγετε τον πρώτο αριθμό'
διαβάστε τον αριθμό 1
πέταξε έξω '
Εισαγάγετε τον δεύτερο αριθμό'
διαβάστε τον αριθμό 2
άθροισμα = $ [num + αριθμός2]
πέταξε έξω '
οάθροισμαείναι$ άθροισμα'

Για να δείτε την έξοδο, εκτελέστε την παρακάτω εντολή:

$κτυπώ δυνατά -uvsum_script.sh

9. Πώς να ανακατευθύνετε την αναφορά εντοπισμού σφαλμάτων σε ένα αρχείο:

Η αποθήκευση μιας αναφοράς εντοπισμού σφαλμάτων ενός σεναρίου bash σε ένα αρχείο μπορεί να είναι βολική σε πολλές περιπτώσεις. Είναι λίγο δύσκολο γιατί να ανακατευθύνετε την αναφορά εντοπισμού σφαλμάτων σε ένα αρχείο. χρησιμοποιούμε κάποιες ειδικές μεταβλητές. Ας το εφαρμόσουμε b_script.sh κώδικας:

#! /bin/bash
εκτελ 5>>dubug_report.log
BASH_XTRACED='5'
PS4='$ LINENO--'
πέταξε έξω 'Εισαγάγετε τον αριθμό 1'
ανάγνωσηνούμερο 1
πέταξε έξω 'Εισαγάγετε τον αριθμό 2'
ανάγνωσηνούμερο 2
αν [ '$ αριθμός' -γτ '$ number2' ]
τότε
πέταξε έξω 'Ο αριθμός 1 είναι μεγαλύτερος από τον αριθμό 2'
elif [ '$ number1' -ισοδύναμο '$ number2' ]
τότε
πέταξε έξω 'Ο αριθμός 1 είναι ίσος με τον αριθμό 2'
αλλού
πέταξε έξω 'Ο αριθμός 2 είναι μεγαλύτερος από τον αριθμό 1'
είναι

Στη δεύτερη γραμμή του κώδικα, φαίνεται ότι ανακατευθύνουμε την έξοδο σε a debug_report.log αρχείο χρησιμοποιώντας το εκτελ εντολή με περιγραφέα αρχείων 5 (FD5).

exec 5> debug_report.log: ο εκτελ εντολή ανακατευθύνει όλα όσα συμβαίνουν στο κέλυφος σε ένα αρχείο debug_report.log.

BASH_XTRACEFD = 5: Είναι ένα συγκεκριμένη μεταβλητή bash και δεν μπορεί να χρησιμοποιηθεί σε κανένα άλλο κέλυφος. Πρέπει να εκχωρηθεί ένας έγκυρος περιγραφέας αρχείων και το bash θα γράψει την εξαγόμενη έξοδο σε debug_report.log.

PS4 = ’$ LINENO– ‘: Είναι επίσης μια μεταβλητή bash που χρησιμοποιείται για την εκτύπωση του αριθμού γραμμής κατά τον εντοπισμό σφαλμάτων χρησιμοποιώντας τη λειτουργία xtrace. Η προεπιλεγμένη τιμή του PS4 είναι το + σημάδι

Το παραπάνω σενάριο δημιουργεί ένα αρχείο καταγραφής που ονομάζεται debug_report.log, για να το διαβάσετε, χρησιμοποιήστε το Γάτα εντολή:

Συμπέρασμα:

Ένας κωδικός γεμάτος σφάλματα μπορεί να επηρεάσει την απόδοση του προγράμματος και να είναι επιβλαβής και για το υλικό. Ο εντοπισμός σφαλμάτων είναι πολύ σημαντικός για κάθε πρόγραμμα αφού καθιστά το πρόγραμμα πιο αποτελεσματικό. Η εύρεση υπαρχόντων και πιθανών σφαλμάτων κατά την ανάπτυξη ενός προγράμματος μπορεί να αποτρέψει το πρόγραμμά σας από την απροσδόκητη συμπεριφορά. Οι μεγάλοι κώδικες συνήθως χρειάζονται ενεργό εντοπισμό σφαλμάτων, αυξάνοντας την αποτελεσματικότητα του κώδικα εξαλείφοντας τα κομμάτια κώδικα που καταναλώνουν προσφυγή.

Πολλές γλώσσες προγραμματισμού και περιβάλλοντα έχουν τα δικά τους προγράμματα εντοπισμού σφαλμάτων. Στο σενάριο bash, μπορούν να εφαρμοστούν διάφορες τεχνικές για τον εντοπισμό σφαλμάτων του σεναρίου. Αυτός ο οδηγός επικεντρώθηκε σε όλες τις μεθόδους που μπορούν να χρησιμοποιηθούν για την εύρεση σφαλμάτων στα σενάρια bash. Έτσι, όποτε αισθάνεστε ότι το σενάριο bash δεν συμπεριφέρεται όπως αναμενόταν, χρησιμοποιήστε οποιαδήποτε από τις τεχνικές που αναφέρονται παραπάνω, αλλά η λειτουργία xtrace (-x) είναι πολύ χρήσιμη στις περισσότερες περιπτώσεις.