Κατανόηση και σύνταξη μεταβλητών Linux στο Shell Scripting - Μέρος 10


Η γλώσσα δέσμης ενεργειών του κελύφους Linux ήταν πάντα ένα καυτό θέμα και θα είναι πάντα στο μέλλον. Η Shell Scripting Language είναι μαγική και είναι τόσο εύκολο να κάνεις ένα πρόγραμμα σε γλώσσα σεναρίου όπως σε οποιαδήποτε άλλη γλώσσα. Ωστόσο, χρειάζεται μια εις βάθος γνώση του τι κάνουμε και ποιο είναι το αναμενόμενο αποτέλεσμα.

Όλα τα άρθρα δέσμης ενεργειών που έχουμε γράψει για τους αναγνώστες μας εκτιμώνται ιδιαίτερα, συμπεριλαμβανομένου του τελευταίου \An Insight of Linux Variables. Επεκτείνουμε το τελευταίο άρθρο σε ένα νέο Επίπεδο.

Μεταβλητές ιδιότητες

Κάθε Μεταβλητή στο περιβάλλον Linux έχει ορισμένες επιλογές και αυτές ονομάζονται «χαρακτηριστικά». Αυτές οι επιλογές ή χαρακτηριστικά μπορούν να ενεργοποιηθούν Ενεργό και Απενεργοποιημένο, όταν απαιτείται ανάλογα με την κατάσταση, χρησιμοποιώντας την εντολή \declare.

Ένα Παράδειγμα χαρακτηριστικού μεταβλητής χρησιμοποιεί έναν διακόπτη πείτε «-i», ο οποίος θα ενεργοποιήσει το χαρακτηριστικό ακέραιος για την αντίστοιχη μεταβλητή. Ακόμα κι αν μια μη αριθμητική τιμή μεταβιβαστεί στον διακόπτη «-i», δεν θα εμφανιστεί μήνυμα σφάλματος και δεν θα βγει το «0» ως ερμηνεία ακέραιου αριθμού. Εδώ γίνεται πιο ξεκάθαρο από το παρακάτω παράδειγμα.

Δηλώστε μια μεταβλητή Integer, bill=121

:~$ declare -i bill=121

Εκτυπώστε την τιμή της μεταβλητής λογαριασμού.

:~$ printf "%d\n" "$bill" 

121

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

:~$ bill=tecmint

Τώρα, εκτυπώστε ξανά την τιμή της μεταβλητής λογαριασμού.

:~$ printf "%d\n" "$bill" 

0

Σημειώστε «0» στη θέση του μηνύματος σφάλματος.

:~$ declare -p bill 

declare -i bill="121"

Εδώ, ένας διακόπτης -p (σημαίνει εκτύπωση) έρχεται να σώσει.

Για να απενεργοποιήσουμε τα χαρακτηριστικά μιας μεταβλητής, αυτό που χρειαζόμαστε είναι να βάλουμε ένα σύμβολο + (συν) ακριβώς πριν από το διακόπτη. Εδώ είναι πιο ξεκάθαρο από το παρακάτω παράδειγμα.

Απενεργοποιήστε Απενεργοποίηση το χαρακτηριστικό ακέραιος για την παραπάνω μεταβλητή.

:~$ declare +i bill

Ελέγξτε την τιμή της μεταβλητής.

:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

Τώρα εκτυπώστε την τιμή της μεταβλητής χρησιμοποιώντας τη συμβολοσειρά διακόπτη.

:~$ printf "%s\n" "$bill" 

tecmint

Εδώ στο παραπάνω παράδειγμα, το bash δεν μπορούσε να κρίνει τη μη αριθμητική τιμή ως σφάλμα, ωστόσο το printf ερμηνεύει τι θα μπορούσε να είναι αριθμός και τι όχι.

Μεταβλητές μόνο για ανάγνωση

Μπορεί να έχετε ακούσει τη μνήμη μόνο για ανάγνωση (ROM), αλλά τι είναι η μεταβλητή μόνο για ανάγνωση; Έχει κάποια ομοιότητα με τη ROM;

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

Καταχωρίστε ένα όνομα μεταβλητής μόνο για ανάγνωση (-r), η τιμή της οποίας είναι \linux-console.net.

:~$ declare -r name="linux-console.net"

Εκτυπώστε την τιμή της παραπάνω δηλωμένης μεταβλητής.

:~$ printf "%s\n" "$name" 

linux-console.net

Προσπαθήστε να αλλάξετε την τιμή της μεταβλητής.

:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

Όπως αναφέρθηκε παραπάνω, τα χαρακτηριστικά μιας μεταβλητής μόνο για ανάγνωση μπορούν να αλλάξουν χρησιμοποιώντας το σύμβολο «+».

Εξαγωγή μεταβλητών στο Linux

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

Μια μεταβλητή μπορεί να εξαχθεί εκτός του κελύφους χρησιμοποιώντας το διακόπτη declare -x (export), ο οποίος αναγνωρίζει στο κέλυφος αυτό που θέλετε να εξαγάγετε. Ως διακόπτης δήλωσης εξαγωγής μπορεί να χρησιμοποιηθεί.

:~$ declare -x variable=”Constant_Value”

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

Θέλουμε να έχουμε μια μεταβλητή που θα πρέπει να είναι μόνο για ανάγνωση και να είναι διαθέσιμη εκτός του σεναρίου, πρέπει να χρησιμοποιήσουμε τον διακόπτη -r και τον διακόπτη -x ταυτόχρονα.

:~$ declare -rx variable=”Constant_Value”

Μεταβλητές Περιβάλλοντος

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

Κατανόηση της παραπάνω θεωρίας πρακτικά. Εδώ έχουμε δύο σενάρια 0.sh και 1.sh.

# 0.sh
#!/bin/bash 
declare -rx name=Tecmint 
bash 0.sh 
exit 0

Και το δεύτερο σενάριο είναι.

# 1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=linux-console.net 
printf "%s\n" "$name"
exit 0

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

Το δεύτερο σενάριο μόλις εκτύπωσε τη μεταβλητή από το πρώτο σενάριο που εξήχθη στην πρώτη πρόταση printf. Στη δεύτερη πρόταση printf εμφανίζει τη νέα τιμή που έχει εκχωρηθεί στη μεταβλητή «όνομα».

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

βιβλιογραφικές αναφορές

Η εντολή declare επιτρέπει όλους τους παρακάτω διακόπτες μαζί με τον συνδυασμό τους.

  1. -a : Δηλώνει έναν πίνακα.
  2. -f : Λειτουργία και ορισμός εμφάνισης.
  3. -F : Εμφανίζεται το όνομα της συνάρτησης.
  4. -r : Δηλώστε τη μεταβλητή ως μόνο για ανάγνωση.
  5. -x : Δηλώστε τη μεταβλητή ως Εξαγώγιμη.
  6. -I : Δηλώστε τη μεταβλητή ως ακέραιο.

Αυτα για τωρα. Στο επόμενο άρθρο θα συζητήσουμε τρόπους αντικατάστασης μεταβλητών χρησιμοποιώντας την εντολή «eval» και τις μεταβλητές που έχουν ήδη οριστεί στο bash πριν κλείσουμε αυτό το θέμα. Ελπίζουμε ότι εσείς οι άνθρωποι απολαμβάνετε το ταξίδι σας σε βάθος σεναρίου. Μέχρι τότε, μείνετε συντονισμένοι και συνδεδεμένοι στο linux-console.net.