Bash Subshells

Bash Subshells



Μερικές φορές, απαιτείται να εκτελέσετε μία ή περισσότερες εντολές ή σενάρια στο παρασκήνιο. Αυτή η εργασία μπορεί να γίνει γράφοντας όλες τις εντολές ή τα σενάρια σε ένα αρχείο δέσμης ενεργειών και εκτελώντας το αρχείο χρησιμοποιώντας συμπλεκτικό σύμφωνο (&) ή εκτελώντας τις εντολές ή τα σενάρια στο υποκέλυφος από το τρέχον κέλυφος. Το υποκέλυφος μπορεί να χρησιμοποιηθεί για την εκτέλεση πολλαπλών εντολών ή σεναρίων περικλείοντας το $() ή το backtick (`). Οι μέθοδοι χρήσης του υποκελύφους Bash παρουσιάζονται σε αυτό το σεμινάριο.

Διαφορετικά παραδείγματα Subshell

Οι διαφορετικοί τρόποι εκτέλεσης του σεναρίου στο υποκέλυφος φαίνονται σε αυτό το μέρος του σεμιναρίου.

Παράδειγμα 1: Εκτελέστε το υποκέλυφος χρησιμοποιώντας το Single Quote και το Double Quote

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







#!/bin/bash

#Εκτυπώστε την εντολή 'date' στο υποκέλυφος

ηχώ 'Σήμερα είναι «ημερομηνία». '

#Ορίστε μια μεταβλητή συμβολοσειράς

strVal = 'Bash Subshell'

#Εκτυπώστε τη μεταβλητή στο υποκέλυφος χρησιμοποιώντας μεμονωμένα εισαγωγικά

ηχώ 'Η έξοδος των μεμονωμένων εισαγωγικών:' '$(echo $strVal)'

#Εκτυπώστε τη μεταβλητή στο υποκέλυφος χρησιμοποιώντας διπλά εισαγωγικά

ηχώ 'Η έξοδος των διπλών εισαγωγικών:' ' $(echo $strVal) '

Η ακόλουθη έξοδος εμφανίζεται μετά την εκτέλεση του σεναρίου. Το σενάριο υποκελύφους εκτυπώνεται ως συμβολοσειρά όταν περικλείεται με τα μονά εισαγωγικά. Το σενάριο υποφλοιού εκτελείται όταν περικλείεται με τα διπλά εισαγωγικά:





Παράδειγμα 2: Αναζήτηση όλων των αρχείων της συγκεκριμένης επέκτασης χρησιμοποιώντας το υποκέλυφος

Δημιουργήστε ένα αρχείο Bash με το ακόλουθο σενάριο που παίρνει την επέκταση αρχείου ως είσοδο από τον χρήστη. Στη συνέχεια, η εντολή 'ls' εκτελείται στο υποκέλυφος για αναζήτηση όλων των αρχείων της συγκεκριμένης επέκτασης.





#!/bin/bash

ηχώ -n 'Εισαγάγετε το όνομα της επέκτασης αρχείου:'

#Πάρτε το όνομα επέκτασης αρχείου που θα γίνει αναζήτηση

ανάγνωση εσωτ

#Ελέγξτε την τιμή εισόδου

αν [ [ $ext == '' ] ] ; έπειτα

#Μήνυμα σφάλματος εκτύπωσης

ηχώ «Δεν δίνεται παράταση».

αλλού

ηχώ 'Ονόματα αρχείων με $ext επέκταση:'

#Εκτύπωση όλων των ονομάτων αρχείων με τη δεδομένη επέκταση

ηχώ ' $( echo `ls *.$ext` ) '

είναι

Η ακόλουθη έξοδος εμφανίζεται μετά την εκτέλεση του σεναρίου με την είσοδο 'txt'. Σύμφωνα με την έξοδο, τρία αρχεία κειμένου υπάρχουν στην τρέχουσα θέση:



Η ακόλουθη έξοδος εμφανίζεται μετά την εκτέλεση του σεναρίου με την κενή τιμή:

Παράδειγμα 3: Εκτελέστε την Αριθμητική Παράσταση στο Υποκέλυφος

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

#!/bin/bash

#Ορίστε μια μεταβλητή γονικού κελύφους

αριθμός = 10

#Εκτυπώστε το αποτέλεσμα με βάση τη μεταβλητή του γονικού κελύφους

( ( αποτέλεσμα = $αριθμός + 5 ) )

ηχώ 'Το άθροισμα του $αριθμός +5= $result '

#Δημιουργήστε μια μεταβλητή υποφλοιού με το ίδιο όνομα του γονικού κελύφους

( αριθμός = είκοσι ; ( ( αποτέλεσμα = $αριθμός + 10 ) ) ; ηχώ 'Το άθροισμα του $αριθμός +5= $result ' )

#Εκτυπώστε ξανά το αποτέλεσμα με βάση τη μεταβλητή του γονικού κελύφους

ηχώ 'Το άθροισμα του $αριθμός +5= $result '

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

Παράδειγμα 4: Εκτελέστε πολλαπλές εντολές στο υποκέλυφος

Δημιουργήστε ένα αρχείο Bash με την ακόλουθη δέσμη ενεργειών που στέλνει την έξοδο της εντολής 'echo' στην εντολή 'sed' που αντικαθιστά την αντίστοιχη τιμή συμβολοσειράς με μια άλλη συμβολοσειρά. Η έξοδος της εντολής 'echo' είναι 'JavaScript'. Έτσι, αυτή η τιμή συγκρίνεται με το 'Java' και το 'JavaScript'. Εάν βρεθεί αντιστοιχία, οι αντίστοιχες συμβολοσειρές αντικαθίστανται από τη συμβολοσειρά 'Τύπος'.

#!/bin/bash

#Ορίστε μια τιμή συμβολοσειράς

strVal = 'JavaScript'

#Εκτύπωση της αρχικής τιμής συμβολοσειράς

ηχώ 'Τιμή συμβολοσειράς: $strVal '

#Print the subshell value

ηχώ -n 'Τιμή υποκελύφους: '

ηχώ ' $(echo $strVal | sed 's|Java|Τύπος JavaScript|') '

Η ακόλουθη έξοδος εμφανίζεται μετά την εκτέλεση του σεναρίου. Σύμφωνα με την έξοδο, η συμβολοσειρά 'Java' αντικαθίσταται από τη συμβολοσειρά 'Τύπος'. Η έξοδος του υποκελύφους είναι 'JavaScript TypeScript':


συμπέρασμα

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