Android

Πώς να ελέγξετε αν μια συμβολοσειρά περιέχει μια υποσχηματισμό στο bash

Python Web Apps with Flask by Ezra Zigmond

Python Web Apps with Flask by Ezra Zigmond

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

Anonim

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

Χρήση των χαρακτήρων Wildcards

Η πιο εύκολη προσέγγιση είναι να περιβάλλετε το υποσύστημα με σύμβολα μπαλαντέρ (αστερίσκο) * και να το συγκρίνετε με τη συμβολοσειρά. Η μπαλαντέρ είναι ένα σύμβολο που χρησιμοποιείται για να αντιπροσωπεύει μηδέν, έναν ή περισσότερους χαρακτήρες.

Αν η δοκιμή επιστρέψει true , η υποζώνη περιέχεται στη συμβολοσειρά.

Στο παρακάτω παράδειγμα χρησιμοποιούμε την εντολή if και τον χειριστή ισότητας ( == ) για να ελέγξουμε αν το υποσύστημα SUB βρίσκεται στο string STR :

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

Όταν εκτελείται το σενάριο θα εξάγει:

It's there.

Χρησιμοποιώντας τον χειριστή της περίπτωσης

Αντί να χρησιμοποιήσετε τη εντολή if, μπορείτε επίσης να χρησιμοποιήσετε την εντολή case για να ελέγξετε αν μια συμβολοσειρά περιλαμβάνει ή όχι μια άλλη συμβολοσειρά.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' case $STR in *"$SUB"*) echo -n "It's there.";; esac

Χρησιμοποιώντας το Regex Operator

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

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

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

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

It's there.

Χρησιμοποιώντας το Grep

Η εντολή grep μπορεί επίσης να χρησιμοποιηθεί για να βρει συμβολοσειρές σε μια άλλη συμβολοσειρά.

Στο ακόλουθο παράδειγμα, περάσαμε τη συμβολοσειρά $STR ως είσοδο για grep και ελέγχοντας αν η συμβολοσειρά $SUB βρίσκεται μέσα στη συμβολοσειρά εισόδου. Η εντολή θα επιστρέψει true ή false , ανάλογα με την περίπτωση.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if grep -q "$SUB" <<< "$STR"; then echo "It's there" fi

Η επιλογή -q λέει ότι το grep είναι ήσυχο, για να παραλείψει την έξοδο.

συμπέρασμα

Ο έλεγχος αν μια συμβολοσειρά περιέχει μια υποζώνη είναι μία από τις πιο βασικές και συχνά χρησιμοποιούμενες λειτουργίες σε δέσμες ενεργειών Bash.

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

bash terminal