Bash Loop Through a List of Strings

Bash Loop Through List Strings



Μια λίστα συμβολοσειρών ή πίνακα ή ακολουθίας στοιχείων μπορεί να επαναληφθεί με τη χρήση Για βρόχος στο bash. Ο τρόπος με τον οποίο μπορείτε να επαναλάβετε τη λίστα συμβολοσειρών στο Bash by for loop εμφανίζεται σε αυτό το σεμινάριο χρησιμοποιώντας διάφορα παραδείγματα σεναρίων bash. Εάν είστε αρχάριος προγραμματισμός bash, μπορείτε να διαβάσετε το σεμινάριο BASH Για Παραδείγματα Βρόχου πριν ξεκινήσετε αυτό το σεμινάριο.

Δημιουργήστε ένα αρχείο bash με όνομα ' for_list1.sh »Και προσθέστε το ακόλουθο σενάριο. Μια τιμή συμβολοσειράς με κενά διαστήματα χρησιμοποιείται εντός του βρόχου. Από προεπιλογή, η τιμή συμβολοσειράς χωρίζεται με κενό. Για βρόχο θα χωρίσει τη συμβολοσειρά σε λέξεις και θα εκτυπώσει κάθε λέξη προσθέτοντας μια νέα γραμμή.







#!/bin/bash
# Διαβάστε μια συμβολοσειρά με κενά χρησιμοποιώντας το βρόχο
ΓιααξίασεΜου αρέσει ο προγραμματισμός
κάνω
πέταξε έξω $ αξία
Έγινε

Παραγωγή:



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



Παράδειγμα-2: Επαναφορά μιας μεταβλητής συμβολοσειράς χρησιμοποιώντας το βρόχο

Δημιουργήστε ένα αρχείο bash με όνομα ' for_list2.sh »Και προσθέστε το ακόλουθο σενάριο. Αντιστοίχιση κειμένου στη μεταβλητή, StringVal και διαβάστε την τιμή αυτής της μεταβλητής χρησιμοποιώντας το βρόχο. Αυτό το παράδειγμα θα λειτουργήσει επίσης όπως το προηγούμενο παράδειγμα και θα διαιρέσει την τιμή της μεταβλητής σε λέξεις με βάση το διάστημα.





#!/bin/bash
# Ορίστε μια μεταβλητή συμβολοσειράς με μια τιμή
StringVal='Καλώς ορίσατε στο linuxhint'

# Επαναλάβετε τη μεταβλητή συμβολοσειράς χρησιμοποιώντας το βρόχο
Γιαωρεςσε $ StringVal?κάνω
πέταξε έξω $ ώρες
Έγινε

Παραγωγή:

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



Παράδειγμα-3: Επαναλάβετε έναν πίνακα τιμών συμβολοσειράς

Δημιουργήστε ένα αρχείο bash με όνομα ' for_list3.sh »Και προσθέστε το ακόλουθο σενάριο. Ένας πίνακας τιμών συμβολοσειράς δηλώνεται με τύπο σε αυτό το σενάριο. Δύο τιμές στον πίνακα που περιέχουν χώρο είναι Linux Mint και Red Hat Linux Το Αυτό το σενάριο θα δημιουργήσει την έξοδο χωρίζοντας αυτές τις τιμές σε πολλές λέξεις και εκτυπώνοντας ως ξεχωριστή τιμή. Αλλά αυτό δεν είναι το σωστό αποτέλεσμα. Η λύση αυτού του τύπου προβλήματος φαίνεται στο επόμενο παράδειγμα.

#!/bin/bash

# Δηλώστε έναν πίνακα συμβολοσειράς με τύπο
δηλώνω -προς το StringArray=('Linux Mint' 'Μαλακό καπέλλο' «Red Hat Linux» 'Ubuntu' 'Debian' )

# Επαναλάβετε τον πίνακα συμβολοσειράς χρησιμοποιώντας το βρόχο
Γιαωρεςσε $ {StringArray [@]}?κάνω
πέταξε έξω $ ώρες
Έγινε

Παραγωγή:

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

Παράδειγμα-4: Εκτύπωση τιμής συμβολοσειράς πολλαπλών λέξεων ως μία τιμή

Δημιουργήστε ένα αρχείο bash με όνομα ' for_list4.sh »Και προσθέστε το ακόλουθο σενάριο. Σε αυτό το παράδειγμα, κάθε στοιχείο της μεταβλητής πίνακα, StringArray περιέχει τιμές δύο λέξεων. Για να εκτυπώσετε κάθε τιμή χωρίς διαχωρισμό και να λύσετε το πρόβλημα του προηγούμενου παραδείγματος, απλά πρέπει να περικλείσετε τη μεταβλητή πίνακα με διπλή παράθεση μέσα για βρόχο.

#!/bin/bash

# Δηλώστε έναν πίνακα συμβολοσειράς με τύπο
δηλώνω -προς το StringArray=(«Windows XP» «Windows 10» 'Windows ME' «Windows 8.1»
'Windows Server 2016' )

# Διαβάστε τις τιμές του πίνακα με κενό διάστημα
Γιαωρεςσε '$ {StringArray [@]}'?κάνω
πέταξε έξω $ ώρες
Έγινε

Παραγωγή:

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

Παράδειγμα-5: Επαναφορά τιμών συμβολοσειράς ενός πίνακα με χρήση του «*»

Δημιουργήστε ένα αρχείο bash με όνομα ' for_list5.sh »Με τον ακόλουθο κώδικα. Εδώ, το σύμβολο ‘*’ χρησιμοποιείται για την ανάγνωση όλων των τιμών συμβολοσειράς του πίνακα. Το πρώτο για βρόχο χρησιμοποιείται για την εμφάνιση τιμών πίνακα σε πολλές γραμμές και το δεύτερο για βρόχο χρησιμοποιείται για την εμφάνιση τιμών πίνακα σε μία μόνο γραμμή.

#!/bin/bash

#Δηλώστε έναν πίνακα συμβολοσειράς
LanguageArray=('PHP' 'Ιάβα' 'C #' 'C ++' 'VB.Net' 'Πύθων' 'Perl')

# Εκτύπωση τιμών πίνακα σε γραμμές
πέταξε έξω 'Εκτύπωση κάθε στοιχείου σε νέα γραμμή'
Γιαval1σε $ {LanguageArray [*]}?κάνω
πέταξε έξω $ val1
Έγινε

πέταξε έξω ''

# Εκτυπώστε τιμές πίνακα σε μία γραμμή
πέταξε έξω 'Εκτύπωση όλων των στοιχείων σε μία γραμμή'
Γιαval2σε '$ {LanguageArray [*]}'?κάνω
πέταξε έξω $ val2
Έγινε
πέταξε έξω ''

Παραγωγή:

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

Παράδειγμα-6: Επαναφορά τιμών συμβολοσειράς διαχωρισμένων με κόμμα

Δημιουργήστε ένα νέο αρχείο bash με όνομα ' for_list6.sh ' με τον ακόλουθο κωδικό. Εδώ, κόμμα (,) χρησιμοποιείται για τη διάσπαση των τιμών συμβολοσειράς. IFS η μεταβλητή χρησιμοποιείται για τον ορισμό του διαχωριστή πεδίου.

#!/bin/bash
DataList='HTML5, CCS3, BootStrap, JQuery'
Field_Separator=$ IFS

# ορίστε κόμμα ως εσωτερικό διαχωριστικό πεδίου για τη λίστα συμβολοσειρών
IFS=,
Γιαωρεςσε $ DataList?
κάνω
πέταξε έξω $ ώρες
Έγινε

IFS=$ Field_Separator

Παραγωγή:

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

Παράδειγμα-7: Ανάγνωση πολλών συστοιχιών συμβολοσειράς μαζί

Δημιουργήστε ένα αρχείο bash με όνομα ' for_list7.sh »Και προσθέστε το ακόλουθο σενάριο. Σε αυτό το παράδειγμα, δύο πίνακες συμβολοσειρών ορίζονται και συνδυάζονται σε έναν άλλο πίνακα. Το εξωτερικό για βρόχο χρησιμοποιείται για την ανάγνωση του συνδυασμένου πίνακα και το εσωτερικό για βρόχο χρησιμοποιείται για την ανάγνωση κάθε εσωτερικού πίνακα.

#! /bin/sh
str_array1=('Magento 2.2.4' 'WooCommerce')
str_array2=('CodeIgnitor' 'Laravel')
συνδυασμός=(str_array1 str_array2)
Γιαδιαχειρίστηκεσε $ {συνδυασμός [@]}
κάνω
eval 'for val σε' $ {'$ arrItem'[@]}'; κάντε echo '$ val'; done '
Έγινε

Παραγωγή:

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

Παράδειγμα-8: Χρήση μοτίβου για ανάγνωση της λίστας συμβολοσειρών

Δημιουργήστε ένα νέο αρχείο bash με όνομα for_list8.sh με τον ακόλουθο κωδικό. Εδώ, ‘ /, /’ μοτίβο χρησιμοποιείται για τη διάσπαση των τιμών συμβολοσειράς βάσει κόμματος.

#! /bin/sh

# Ορίστε μια λίστα μεταβλητής συμβολοσειράς
stringList= WordPress, Joomla, Magento

# Χρησιμοποιήστε κόμμα ως διαχωριστικό και εφαρμόστε ως μοτίβο
Γιαωρεςσε $ {stringList //,/}
κάνω
πέταξε έξω $ ώρες
Έγινε

Παραγωγή:

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

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