Android

Δήλωση Bash if..else

The mind behind Linux | Linus Torvalds

The mind behind Linux | Linus Torvalds

Πίνακας περιεχομένων:

Anonim

Η λήψη αποφάσεων είναι μία από τις πιο θεμελιώδεις έννοιες του προγραμματισμού υπολογιστών. Όπως συμβαίνει σε οποιαδήποτε άλλη γλώσσα προγραμματισμού, if , if , if..elif..else και ένθετο if δηλώσεις στο Bash μπορούν να χρησιμοποιηθούν για την εκτέλεση κώδικα με βάση μια συγκεκριμένη συνθήκη.

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

if Δήλωση

Bash if προϋποθέσεις μπορούν να έχουν διαφορετικές μορφές. Η πιο βασική δήλωση if λαμβάνει την ακόλουθη μορφή:

if TEST-COMMAND then STATEMENTS fi

Η εντολή if ξεκινά με τη λέξη κλειδιού if ακολουθούμενη από την έκφραση υπό όρους και την then λέξη-κλειδί. Η δήλωση τελειώνει με τη λέξη-κλειδί fi .

Εάν το TEST-COMMAND αξιολογηθεί στην τιμή True , εκτελούνται οι ΔΕΙΚΤΕΣ. Αν το TEST-COMMAND επιστρέψει False , δεν συμβαίνει τίποτα, οι STATEMENTS αγνοούνται.

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

Ας δούμε το ακόλουθο σενάριο παραδείγματος που ελέγχει εάν ένας δεδομένος αριθμός είναι μεγαλύτερος από 10.

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi

Αποθηκεύστε τον κώδικα σε ένα αρχείο και εκτελέστε τον από τη γραμμή εντολών:

bash test.sh

Το σενάριο θα σας ζητήσει να εισαγάγετε έναν αριθμό. Εάν, για παράδειγμα, εισάγετε 15, η εντολή test θα αξιολογηθεί ως true επειδή το 15 είναι μεγαλύτερο από 10 και θα εκτελεστεί η εντολή echo μέσα στην then ρήτρα.

The variable is greater than 10.

if..else Δήλωση

Η if..else Bash if..else έχει την ακόλουθη μορφή:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Αν το TEST-COMMAND αξιολογηθεί σε True , θα εκτελεστούν τα STATEMENTS1 . Διαφορετικά, αν το TEST-COMMAND επιστρέψει False , θα εκτελούνται τα STATEMENTS2 . Μπορείτε να έχετε μόνο μία else ρήτρα στη δήλωση.

Ας προσθέσουμε μια ρήτρα else στο προηγούμενο script παράδειγμα:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else Statement

Η if..elif..else Bash if..elif..else έχει την ακόλουθη μορφή:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Αν το TEST-COMMAND1 αξιολογηθεί σε True , θα εκτελούνται τα STATEMENTS1 . Εάν η TEST-COMMAND2 αξιολογηθεί ως True , θα εκτελούνται τα STATEMENTS2 . Εάν καμία από τις εντολές ελέγχου δεν αξιολογηθεί ως True , εκτελείται το STATEMENTS2 .

Μπορείτε να έχετε μία ή περισσότερες ρήτρες elif στη δήλωση. Η ρήτρα else είναι προαιρετική.

Οι συνθήκες αξιολογούνται διαδοχικά. Μόλις μια συνθήκη επιστρέψει True οι υπόλοιπες συνθήκες δεν εκτελούνται και ο έλεγχος προγράμματος μετακινείται στο τέλος των εντολών if .

Ας προσθέσουμε μια ρήτρα elif στο προηγούμενο script:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Ένθετο if Δηλώσεις

Το Bash σάς επιτρέπει να φωλιάζετε if δηλώσεις μέσα σε if δηλώσεις. Μπορείτε να τοποθετήσετε πολλαπλές if statement μέσα σε άλλη εντολή if .

Το παρακάτω σενάριο θα σας ζητήσει να εισαγάγετε τρεις αριθμούς και θα εκτυπώσετε τον μεγαλύτερο αριθμό μεταξύ των τριών αριθμών.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Εδώ είναι πώς θα μοιάζει η έξοδος:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. Αντί να χρησιμοποιείτε δηλώσεις ενθέτων, συνήθως είναι πιο αποτελεσματική η χρήση της δήλωσης περίπτωσης.

Πολλαπλές συνθήκες

Οι λογικοί χειριστές OR και AND σας επιτρέπουν να χρησιμοποιείτε πολλαπλές συνθήκες στις δηλώσεις if .

Εδώ είναι μια άλλη έκδοση του σεναρίου για να εκτυπώσετε τον μεγαλύτερο αριθμό μεταξύ των τριών αριθμών. Σε αυτήν την έκδοση, αντί για τις ένθετες εντολές if , θα χρησιμοποιήσουμε τον λογικό τελεστή AND ( && ).

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Δοκιμαστές

Στο Bash, η εντολή test λαμβάνει μία από τις ακόλουθες μορφές σύνταξης:

test EXPRESSION]

Για να αναιρέσετε την έκφραση δοκιμής, χρησιμοποιήστε τον λογικό τελεστή NOT ( ! ). Κατά τη σύγκριση των συμβολοσειρών χρησιμοποιείτε πάντα μονό ή διπλό εισαγωγικά για να αποφύγετε τυχόν προβλήματα διάσπασης ή στροβιλισμού λέξεων.

Παρακάτω παρατίθενται ορισμένοι από τους πιο συνήθεις χειριστές:

  • -n VAR - Αληθές αν το μήκος του VAR είναι μεγαλύτερο από το μηδέν. -z VAR - Αληθές αν το VAR είναι κενό. STRING1 = STRING2 - Αληθινή [STRING1 και STRING2 είναι ίσες. STRING1 != STRING2 - Οι αληθείς STRING1 και STRING2 δεν είναι ίσοι. INTEGER1 -eq INTEGER2 - Το True INTEGER1 και το INTEGER2 είναι ίσοι. INTEGER1 -gt INTEGER2 - Το True INTEGER1 είναι μεγαλύτερο από INTEGER2. INTEGER1 -lt INTEGER2 - Το True INTEGER1 είναι μικρότερο από INTEGER2. INTEGER1 -ge INTEGER2 - Το True INTEGER1 είναι ίσο ή μεγαλύτερο από INTEGER2. INTEGER1 -le INTEGER2 - Το True INTEGER1 είναι ίσο ή μικρότερο από INTEGER2. -h FILE - Αληθινό αν υπάρχει το ΑΡΧΕΙΟ και είναι ένας συμβολικός σύνδεσμος. -r FILE - Αληθινό αν το ΑΡΧΕΙΟ υπάρχει και είναι αναγνώσιμο. -w FILE - Αληθές αν το ΑΡΧΕΙΟ υπάρχει και είναι εγγράψιμο. -x FILE - Αληθινό αν το ΑΡΧΕΙΟ υπάρχει και είναι εκτελέσιμο. -d FILE - Αληθινό αν υπάρχει το ΑΡΧΕΙΟ και είναι ένας κατάλογος. -e FILE - Αληθινό αν το ΑΡΧΕΙΟ υπάρχει και είναι ένα αρχείο, ανεξάρτητα από τον τύπο (κόμβος, κατάλογος, υποδοχή κλπ.). -f FILE - Αληθινό αν υπάρχει το ΑΡΧΕΙΟ και είναι κανονικό αρχείο (όχι κατάλογος ή συσκευή).

συμπέρασμα

Οι if..elif..else if , if..else και if..elif..else σας επιτρέπουν να ελέγχετε τη ροή της εκτέλεσης του σεναρίου Bash με την αξιολόγηση συγκεκριμένων συνθηκών.

bash terminal