Android

Bash λειτουργίες

341. Παρουσίαση των Windows 10 ! Όλες οι βασικές λειτουργίες !

341. Παρουσίαση των Windows 10 ! Όλες οι βασικές λειτουργίες !

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

Anonim

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

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

Δήλωση λειτουργιών μπάσου

Η σύνταξη για τη δήλωση μιας λειτουργίας bash είναι πολύ απλή. Μπορούν να δηλωθούν σε δύο διαφορετικές μορφές:

  1. Η πρώτη μορφή αρχίζει με το όνομα της λειτουργίας, ακολουθούμενο από παρενθέσεις. Αυτή είναι η προτιμώμενη και πιο χρησιμοποιούμενη μορφή.

    function_name () { commands }

    Έκδοση μιας γραμμής:

    function_name () { commands; }

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

    function function_name { commands }

    Έκδοση μιας γραμμής:

    function function_name { commands; }

Λίγα σημεία που πρέπει να σημειωθούν:

  • Η λίστα εντολών μεταξύ των σγουράδων {} είναι το σώμα της λειτουργίας. Τα σγουράκια που περιβάλλουν το σώμα λειτουργίας πρέπει να διαχωρίζονται από το σώμα από διαστήματα ή νέες γραμμές. Η οριστικοποίηση μιας λειτουργίας δεν εκτελεί. Για να καλέσετε μια λειτουργία bash, απλά χρησιμοποιήστε το όνομα της λειτουργίας. Οι εντολές μεταξύ των σγουρών άγγιγμα εκτελούνται κάθε φορά που η λειτουργία καλείται στο script κέλυφος.Ο ορισμός της λειτουργίας πρέπει να τοποθετηθεί πριν από οποιεσδήποτε κλήσεις προς τη λειτουργία.Όταν χρησιμοποιείτε ενιαία γραμμή "συμπιεσμένο" λειτουργίες, ένα ερωτηματικό ; πρέπει να ακολουθήσετε την τελευταία εντολή στη λειτουργία.Θα πρέπει πάντα να προσπαθήσετε να διατηρήσετε τα ονόματα των λειτουργιών σας περιγραφικά.

Για να το καταλάβετε καλύτερα, ρίξτε μια ματιά στο παρακάτω παράδειγμα:

~ / hello_world.sh

#!/bin/bash hello_world () { echo 'hello, world' } hello_world

Ας αναλύσουμε την γραμμή κώδικα κατά γραμμή:

  • Στη γραμμή 3 ορίζουμε τη λειτουργία δίνοντάς της ένα όνομα και ανοίγοντας το σγουρό ζεύγος { που σηματοδοτεί την έναρξη του σώματος της λειτουργίας. Η γραμμή 4 είναι το σώμα της λειτουργίας. Το σώμα των λειτουργιών μπορεί να περιέχει πολλαπλές εντολές και μεταβλητές δηλώσεις. Η γραμμή 5 , η hello_world αγκύλη συγκράτησης } , ορίζει το τέλος της συνάρτησης hello_world γραμμή 7 εκτελούμε τη λειτουργία. Μπορείτε να εκτελέσετε τη λειτουργία όσες φορές χρειάζεστε.

Εάν εκτελέσετε το σενάριο, θα εκτυπώσει hello, world .

Μεταβλητές Πεδίο εφαρμογής

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

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

Για να δείξουμε καλύτερα πώς λειτουργεί το πεδίο μεταβλητών στο Bash, ας εξετάσουμε ένα παράδειγμα:

~ / variables_scope.sh

#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"

Το σενάριο αρχίζει με τον ορισμό δύο παγκόσμιων μεταβλητών var1 και var2 . Στη συνέχεια, μια συνάρτηση που θέτει μια τοπική μεταβλητή var1 και τροποποιεί την παγκόσμια μεταβλητή var2 .

Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D

Από την παραπάνω έξοδο μπορούμε να συμπεράνουμε ότι:

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

Επιστροφή Τιμών

Σε αντίθεση με τις λειτουργίες σε "πραγματικές" γλώσσες προγραμματισμού, οι λειτουργίες Bash δεν σας επιτρέπουν να επαναφέρετε μια τιμή όταν καλείτε. Όταν ολοκληρωθεί μια λειτουργία bash, η τιμή επιστροφής είναι η κατάσταση της τελευταίας εντολής που εκτελέστηκε στη συνάρτηση, 0 για επιτυχία και μη μηδενικό δεκαδικό αριθμό στην περιοχή 1 - 255 για αποτυχία.

Η κατάσταση επιστροφής μπορεί να καθοριστεί με τη χρήση της λέξης return και έχει εκχωρηθεί στη μεταβλητή $? . Η δήλωση return τερματίζει τη λειτουργία. Μπορείτε να το θεωρήσετε ως την κατάσταση εξόδου της λειτουργίας.

~ / return_values.sh

#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?

some result 55

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

~ / return_values.sh

#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result

some result

Μια άλλη, καλύτερη επιλογή για να επιστρέψετε μια τιμή από μια συνάρτηση είναι να στείλετε την τιμή στο stdout χρησιμοποιώντας echo ή printf όπως φαίνεται παρακάτω:

~ / return_values.sh

#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result

some result

Αντί να εκτελέσουμε απλώς τη συνάρτηση που θα εκτυπώσει το μήνυμα στο stdout, αναθέτουμε την έξοδο της λειτουργίας στη μεταβλητή func_result χρησιμοποιώντας την υποκατάσταση εντολής $() . Η μεταβλητή μπορεί αργότερα να χρησιμοποιηθεί όπως απαιτείται.

Μεταβιβάζοντας τα Arguments σε Bash Λειτουργίες

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

  • Οι παραμέτρους που πέρασαν είναι $1 , $2 , $3 $n , που αντιστοιχούν στη θέση της παραμέτρου μετά το όνομα της συνάρτησης. Η μεταβλητή $0 προορίζεται για το όνομα της συνάρτησης. Η μεταβλητή $# περιέχει τον αριθμό παραμέτρων θέσης / Οι μεταβλητές $* και $@ κατέχουν όλες τις παραμέτρους θέσης / τα επιχειρήματα που έχουν μεταβιβαστεί στη συνάρτηση.
    • Όταν το διπλό αναφέρει, το "$*" επεκτείνεται σε μια ενιαία σειρά που χωρίζεται από το διάστημα (ο πρώτος χαρακτήρας του IFS) - "$1 $2 $n" . "$1" "$2" "$n" .Όταν δεν αναφέρονται διπλά, τα $* και $@ είναι τα ίδια.

Ακολουθεί ένα παράδειγμα:

~ / passing_arguments.sh

#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"

Hello Joe

συμπέρασμα

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

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

bash terminal