Πώς να δημιουργήσετε και να καλέσετε λειτουργίες στο Bash

Ένας γρήγορος οδηγός για το πώς να δημιουργήσετε και να καλέσετε λειτουργίες στο Bash.

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

Το Bash παρέχει μερικές ενσωματωμένες λειτουργίες όπως echo και read, αλλά μπορούμε επίσης να δημιουργήσουμε τις δικές μας λειτουργίες.




Δημιουργία μιας λειτουργίας στο Bash

Υπάρχουν δύο τρόποι για να δημιουργήσουμε συναρτήσεις στο Bash:

Ένας τρόπος είναι να χρησιμοποιήσετε απλώς το όνομα της συνάρτησης, π.χ.


functionName(){ // scope of function }

Συμπαγής έκδοση:

functionName(){ echo 'hello'; }

Ένας άλλος τρόπος είναι να δηλώσετε μια συνάρτηση χρησιμοποιώντας το function λέξη-κλειδί:

function functionName { // scope of function }

Συμπαγής έκδοση:

function functionName { echo 'hello'; }

Παρατηρήστε πως δεν χρειαζόμαστε το () όταν χρησιμοποιείτε το function λέξη-κλειδί για να δημιουργήσετε μια συνάρτηση.


Σημαντικά σημεία που πρέπει να σημειώσετε σχετικά με τις λειτουργίες Bash:

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

Παράδειγμα:

Ο παρακάτω κώδικας δημιουργεί μια λειτουργία που εκτυπώνει το 'Hello World' στην κονσόλα. Το όνομα της συνάρτησης καλείται εκτύπωση Γεια :

#!/bin/bash printHello(){
echo 'Hello World!' }


Κλήση μιας λειτουργίας στο Bash

Πώς ονομάζουμε την παραπάνω συνάρτηση; Το μόνο που χρειάζεται να κάνετε στο bash script σας είναι να γράψετε το όνομα της συνάρτησης και θα κληθεί.


Για παράδειγμα:

#!/bin/bash printHello(){
echo 'Hello World!' } # Call printHello function from anywhere in the script by writing the name printHello

Παραγωγή:

'Hello World'

Διαβιβάζοντας επιχειρήματα

Η παραπάνω συνάρτηση printHello() δεν έχει παραμέτρους Οποτεδήποτε το ονομάζουμε, έχουμε την έξοδο 'Hello World'. Τι γίνεται όμως αν θέλουμε να δημιουργήσουμε μια πιο γενική λειτουργία; Για παράδειγμα μπορούμε να καλέσουμε τη συνάρτηση με κάποιο όρισμα και θα εκτυπώσει ό, τι στέλνουμε σε αυτήν.

Υπάρχουν δύο τρόποι για να το κάνετε αυτό.


Πρώτα μπορούμε να τροποποιήσουμε το printHello() συνάρτηση για να εκτυπώσετε τα ορίσματα που διαβιβάζονται σε αυτό:

Για παράδειγμα:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny World printAny DevQa printAny I love coding!

Παραγωγή:

Hello World Hello DevQA Hello I

Παρατηρήστε πώς η τρίτη δήλωση εκτύπωσης printAny I love coding! μόνο το 'Γεια σου, εγώ'.


Αυτό οφείλεται στο γεγονός ότι η λειτουργία μας έχει σχεδιαστεί για να λαμβάνει μόνο 1 παράμετρο $1. Η λέξη 'Λατρεύω την κωδικοποίηση!' είναι στην πραγματικότητα 3 παράμετροι.

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

Για παράδειγμα:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny 'I love coding!'

Παραγωγή:

Hello I love coding

Ένα άλλο παράδειγμα, μπορούμε να περάσουμε και σε ψηφία:

#!/bin/bash add() {
result=$(($1 + $2))
echo 'Result is: $result' } add 1 2

Παραγωγή:

Result is: 3

Επιστρεφόμενες τιμές

Οι λειτουργίες Bash μπορούν επίσης να επιστρέψουν τιμές.

Για παράδειγμα:

#!/bin/bash add() {
result=$(($1 + $2)) } add 1 2 echo 'The sum is: '$result

Παραγωγή:

The sum is: 3

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

Για παράδειγμα:

#!/bin/bash add () { local result=$(($1 + $2)) echo '$result' } result='$(add 1 2)' echo 'The sum is: '$result

Παραγωγή:

The sum is: 3