Οδηγός για αρχάριους στο BASH - Συγκρίνοντας τα πράγματα

01 από 08

Οδηγός για αρχάριους στο BASH - Συγκρίνοντας τα πράγματα

BASH Tutorial - Συγκρίνοντας τις χορδές.

Στο προηγούμενο μέρος του σεμιναρίου BASH εξετάσαμε τις υποθετικές δηλώσεις .

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

Η παραπάνω εικόνα δείχνει το πρώτο παράδειγμα στον οδηγό αυτής της εβδομάδας:

#! / bin / bash

όνομα1 = "gary"
όνομα2 = "bob"

αν ["$ name1" = "$ name2"]
έπειτα
echo "τα ονόματα ταιριάζουν"
αλλού
echo "τα ονόματα δεν ταιριάζουν"
fi


Στο παραπάνω σενάριο έχω ορίσει δύο μεταβλητές που ονομάζονται name1 και name2 και τους έχουν εκχωρήσει τις τιμές "gary" και "bob". Καθώς οι μεταβλητές περιέχονται σε εισαγωγικά, ονομάζονται μεταβλητές συμβολοσειρών, οι οποίες γίνονται πιο σχετικές με το μάθημα.

Το σύνολο της δέσμης ενεργειών είναι να συγκρίνετε την τιμή των $ name1 και $ name2 και αν ταιριάζουν με την έξοδο η συμβολοσειρά "match names" και αν δεν εξάγουν τη συμβολοσειρά "τα ονόματα δεν ταιριάζουν".

Τα εισαγωγικά γύρω από τις μεταβλητές $ name1 και $ name2 είναι σημαντικές επειδή αν δεν έχει οριστεί η τιμή ενός από αυτά, τότε το σενάριο θα συνεχίσει να λειτουργεί.

Για παράδειγμα, αν το $ name1 δεν είχε οριστεί ποτέ τότε θα συγκρίνετε "" με το "bob". Χωρίς τα εισαγωγικά, θα μείνατε με = "bob" που σαφώς αποτυγχάνει.

Μπορείτε επίσης να χρησιμοποιήσετε τη συμβολοσειρά! = Για να ορίσετε ότι δεν είναι ίση με τα εξής:

αν ["$ name1"! = "$ name2"]

02 από 08

Οδηγός για αρχάριους στο BASH - Συγκρίνοντας τις χορδές

BASH Tutorial - Συγκρίνοντας τις χορδές.

Στο παραπάνω παράδειγμα η δοκιμή συγκρίνει τις ίδιες δύο συμβολοσειρές και ρωτά το ερώτημα που ο Gary έρχεται πριν από το bob στο αλφάβητο;

Σαφώς η απάντηση είναι όχι.

Το σενάριο εισάγει το λιγότερο από τον χειριστή (<). Καθώς ο χειριστής λιγότερο από τον χειριστή χρησιμοποιείται επίσης για ανακατεύθυνση, θα πρέπει να το ξεφύγετε με μια κάθετο (\) για να σημαίνει λιγότερα από όσα λόγος στο παραπάνω σενάριο σύγκρινε "$ name1" \ <"$ name2".

Το αντίθετο λιγότερο από είναι προφανώς μεγαλύτερο από το. Αντί να χρησιμοποιείτε \ <χρήση \>.

Για παράδειγμα

εάν ["$ name1" \> "$ name2"]

03 του 08

Οδηγός για αρχάριους στο BASH - Συγκρίνοντας τις χορδές

BASH Tutorial - Συγκρίνοντας τις χορδές.

Αν θέλετε να ελέγξετε αν μια μεταβλητή έχει μια τιμή, μπορείτε να χρησιμοποιήσετε την παρακάτω δοκιμή:

αν [-n $ name2]

Στο παραπάνω script έχω δοκιμάσει αν το $ name2 έχει δώσει μια τιμή και αν δεν έχει το μήνυμα "Δεν υπάρχει bob, δεν υπήρξε ποτέ bob εμφανίζεται".

04 του 08

Οδηγός για αρχάριους στο BASH - Συγκρίνοντας τις χορδές

BASH Tutorial - Συγκρίνοντας τις χορδές.

Στην προηγούμενη διαφάνεια καλύψαμε αν έχει οριστεί μια μεταβλητή ή όχι. Μερικές φορές μπορεί να έχει οριστεί μια μεταβλητή αλλά ίσως να μην έχει αξία.

Για παράδειγμα:

όνομα1 = ""

Για να ελέγξετε αν μια μεταβλητή έχει τιμή ή όχι (δηλ. Έχει μήκος μηδέν) χρησιμοποιήστε -z ως εξής:

αν [-z $ name1]

Στο παραπάνω σενάριο έχω ορίσει $ name1 σε μια συμβολοσειρά μηδενικού μήκους και έπειτα το συνέκρινε χρησιμοποιώντας το -z. Αν το όνομα $ 1 έχει μηδέν μήκος, εμφανίζεται το μήνυμα "gary έχει βγει για το βράδυ".

05 του 08

Οδηγός για αρχάριους στο BASH - Σύγκριση αριθμών

BASH Tutorial - Σύγκριση Αριθμών.

Μέχρι στιγμής όλες οι συγκρίσεις έγιναν για χορδές. Τι γίνεται με τη σύγκριση των αριθμών;

Το παραπάνω σενάριο δείχνει ένα παράδειγμα σύγκρισης δύο αριθμών:

#! / bin / bash

α = 4
b = 5

εάν [$ a = $ b]
έπειτα
echo "4 = 5"
αλλού
echo "4 δεν ισούται με 5"
fi

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

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

Αν [$ a -eq $ b]

06 του 08

Οδηγός για αρχάριους στο BASH - Σύγκριση αριθμών

BASH Tutorial - Σύγκριση Αριθμών.

Εάν θέλετε να συγκρίνετε αν ένας αριθμός είναι μικρότερος από έναν άλλο αριθμό, μπορείτε να χρησιμοποιήσετε το λιγότερο από τον χειριστή (<). Όπως και με τις χορδές, πρέπει να ξεφύγετε από τον χειριστή με μια κάθετο. (\ <).

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

Για παράδειγμα:

αν [$ a -lt $ b]

αν [$ a -le $ b]

αν [$ a -ge $ b]

αν [$ a -gt $ b]

07 του 08

Οδηγός για αρχάριους στο BASH - Σύγκριση αριθμών

BASH Tutorial - Σύγκριση Αριθμών.

Τέλος, για αυτόν τον οδηγό, εάν θέλετε να ελέγξετε αν δύο αριθμοί είναι διαφορετικοί, μπορείτε να χρησιμοποιήσετε είτε το μικρότερο από όσο και το μεγαλύτερο από τους χειριστές μαζί (<>) ή -ne ως εξής:

εάν [$ a <> $ b]

αν [$ a -ne $ b]

08 από 08

Οδηγός για αρχάριους στην BASH - Λειτουργοί σύγκρισης - Περίληψη

Εάν χάσατε τα πρώτα τρία μέρη αυτού του οδηγού, μπορείτε να τα βρείτε κάνοντας κλικ στους παρακάτω συνδέσμους:

Στο επόμενο μέρος του οδηγού θα καλύπτω αριθμητική.