Android

Πώς να συγκρίνετε τις συμβολοσειρές στο bash

PHP Syntax

PHP Syntax

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

Anonim

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

Αυτό το σεμινάριο περιγράφει τον τρόπο σύγκρισης συμβολοσειρών στο Bash.

Σύγκριση φορέων

Οι χειριστές σύγκρισης είναι χειριστές που συγκρίνουν τις τιμές και επιστρέφουν true ή false. Κατά τη σύγκριση των συμβολοσειρών στο Bash μπορείτε να χρησιμοποιήσετε τους ακόλουθους χειριστές:

  • string1 = string2 και string1 == string2 - Ο χειριστής ισότητας επιστρέφει true αν οι τελεστές είναι ίσοι.
    • Χρησιμοποιήστε τον τελεστή = με τη test ; then echo "Strings are equal." else echo "Strings are not equal." fi ; then echo "Strings are equal." else echo "Strings are not equal." fi

      Όταν εκτελείται η δέσμη ενεργειών, θα εκτυπωθεί η ακόλουθη έξοδος.

      Strings are equal.

      Ακολουθεί ένα άλλο σενάριο που λαμβάνει την είσοδο από τον χρήστη και συγκρίνει τις δεδομένες συμβολοσειρές. Σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε το ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Εκτελέστε τη δέσμη ενεργειών και εισαγάγετε τις συμβολοσειρές, όταν σας ζητηθεί:

      Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.

      Μπορείτε επίσης να χρησιμοποιήσετε το λογικό και && και / ή || για να συγκρίνετε τις συμβολοσειρές:

      ] && echo "Equal" || echo "Not equal"

      Not equal

      Ελέγξτε αν μια συμβολοσειρά περιέχει ένα υποσύρειο

      Υπάρχουν πολλοί τρόποι για να ελέγξετε αν μια συμβολοσειρά περιέχει μια υποσύσταση.

      Μια προσέγγιση είναι να χρησιμοποιήσετε το surround του υποσχηματισμού με σύμβολα αστερίσκου * που σημαίνει ότι ταιριάζουν με όλους τους χαρακτήρες.

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      Το σενάριο θα επαναλάβει τα εξής:

      It's there.

      Μια άλλη επιλογή είναι να χρησιμοποιήσετε τον χειριστή regex =~ όπως φαίνεται παρακάτω:

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      Η περίοδος που ακολουθείται από έναν αστερίσκο .* Αντιστοιχεί σε μηδέν ή περισσότερες εμφανίσεις οποιουδήποτε χαρακτήρα εκτός από έναν χαρακτήρα γραμμής νέας γραμμής.

      Ελέγξτε εάν μια συμβολοσειρά είναι κενή

      Πολύ συχνά θα χρειαστεί να ελέγξετε αν μια μεταβλητή είναι κενή ή όχι. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας τους χειριστές -n και -z .

      #!/bin/bash VAR='' if]; then echo "String is empty." fi

      String is empty.

      #!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi

      String is not empty.

      Συγκρίνοντας τις χορδές με τον χειριστή περιπτώσεων

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

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

      Λεξικογραφική σύγκριση

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

      Τα παρακάτω σενάρια συγκρίνουν δύο χορδές λεξικογραφικά:

      #!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi

      Το σενάριο θα εξάγει τα εξής:

      Ubuntu is lexicographically greater than Linuxize.

      συμπέρασμα

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

      bash terminal