Verwendung von Funktionen in Bash

Verwendung von Funktionen in Bash mit dieser Unix-Shell-basierten, POSIX-kompatiblen Computersprache. Als Sprache besteht ihre Funktion in der Interpretation von Linux-Befehlen, die es uns ermöglichen, unsere sich wiederholenden Prozesse zu automatisieren und auch Befehle aus den Betriebssystembefehlen zu erstellen. In diesem Artikel werden wir überprüfen wie man Funktionen in bash benutzt. Ich empfehle den Artikel wie zu lesen Erstellen Sie Ihre eigenen Skripte mit bash.

In dem von uns vorgeschlagenen Skript verwenden wir die Bash-Sprache, um nach einer Datei zu suchen und deren Namen zu kennen. Dafür werden wir die verwenden Befehl finden aber mit Hilfe der Funktionen, die zuvor in diesem Skript definiert wurden. Sie müssen eine Besonderheit oder Einschränkung von Bash berücksichtigen, die nicht in allen Sprachen vorhanden ist: Um eine Funktion aufzurufen, muss sie definiert sein zuvor.

Funktionen definieren

Es gibt zwei Möglichkeiten, Funktionen zu definieren: mit oder ohne Funktionsdeklaration:

function nombre_funcion () 
{
    # codigo
}

oder dieses andere, das ich benutze, wie Sie später sehen werden.

nombre_funcion ()
{
    # codigo
}

Ebenso Bash bietet auch eine Methode zum Übergeben von Parametern und zum Zurückgeben von Ergebnissen. das werden wir in zukünftigen Artikeln sehen.

#!/usr/bin/env bash

# ~/.bin/encontrar
# encuentra archivos a partir de la descripción de su nombre en un directorio específico
#
# Por Pedro Ruiz Hidalgo
# version 1.0.0
# Copyright © enero 2017
#
#

EXIT_OK=0
EXIT_BAD=66

PATRON=$1
DIRECTORIO=$2

autor ()
{
 echo -e "\nPedro Ruiz Hidalgo @petrorum. Copyright © 2017\n"
}

ayuda ()
{
 echo -e "\nencontrar [PATRON] [DIRECTORIO]\n"
} 

noparams ()
{
 echo -e "\nSon necesarios dos parámetros\nencontrar -h para ayuda\n"
 read -p "¿Quieres ver la ayuda? (S|s)" -n 1 -r
 if [[ $REPLY =~ ^[Ss]$ ]];
    then
       echo ""
       ayuda
 fi
}

nodir ()
{
 echo -e "\nDirectorio no Existe\n"
}

if [[ $PATRON == "-h" ]];
then 
 ayuda
 exit $EXIT_OK
fi

if [[ $PATRON == "-a" ]];
then 
 autor
 exit $EXIT_OK
fi

if [ $# -lt 2 ];
then
 noparams
else
 if [ -d $DIRECTORIO ];
 then
 echo ""
 find $DIRECTORIO -name $PATRON*
 echo ""
 exit $?
 else 
 nodir 
 exit EXIT_BAD
 fi
fi


Skriptanalyse

Definitionen

Für Bash Jeder erfolgreich abgeschlossene Prozess muss den Code "0" als Signal haben. Die Zeilen 12 und 13 definieren die behandelten Fehlercodes EXIT_OK für den Erfolg y EXIT_BAD zum Beenden bei einem Fehler.

In den Zeilen 15 und 16 werden den Variablen PATTERN und DIRECTORY die ersten ($ 1) und zweiten ($ 2) Parameter zugewiesen, die in der Befehlszeile nach dem Namen des Skripts angezeigt werden, wie wir später bei der Ausführung sehen werden.

Im 18 Linie Wir schaffen unsere erste Funktion. Die Funktion «Autor» zeigt die Drehbuchautorschaft wenn wir es mit dem Argument "-a" aufrufen, wie im if in den Zeilen 50 ~ 54 zu sehen ist. Das Argument "-E" ab Zeile 23 ermöglicht die Anzeige der Folge von «nächste Zeile» durch Codierung von «\ n».

Der Aufruf von noparams (Zeilen 28 bis 37) ist für die Verwaltung der Ereignisse zuständig, die auftreten müssen, wenn das Skript ohne Parameter aufgerufen wird. Wir zeigen, ordnungsgemäß zwischen neuen Zeilencodes eingeschlossen, eine Meldung, die angibt, dass das Skript mit zwei Parametern ausgeführt werden muss. Anschließend wird eine Option (Zeile 31) zur Verwendung angezeigt lesen Sie werden aufgefordert, "S" oder "s" zu drücken, falls Sie Hilfe anzeigen möchten. In Zeile 32 sagen wir wörtlich: 'Wenn die Antwort (die uns in der Variablen einfällt) $ ANTWORT) enthält eines der Zeichen in Groß- oder Kleinbuchstaben ', dann zeigt (Zeile 33) eine leere Zeile (Zeile 34) und führt die Hilfefunktion aus (Zeilen 23 bis 26).

Die Knotenfunktion (Zeilen 39 bis 42) wird ausgeführt, wenn festgestellt wird, dass das Verzeichnis, in dem die Suche versucht wird, nicht vorhanden ist.

Funktionalität

Damit haben wir schon definierte alle notwendigen Funktionen Um unser Programm auszuführen, das tatsächlich in Zeile 44 beginnt, überprüfen Sie, ob der erste der Parameter, die das Skript empfängt, "-h" ist. Wenn dies der Fall ist, führen Sie die Hilfefunktion und aus Ausgänge, die eine normale Beendigung anzeigen.

Wenn PATTERN (erster Parameter wie in Zeile 15 beschrieben) "-a" ist, wird der Autor nach demselben Mechanismus angezeigt, der im vorherigen Absatz für die Option "-h" erläutert wurde.

An der Leitung 56 Es wird kontrolliert, dass wir nicht weniger als zwei Parameter erhalten habenIn diesem Fall wird die Noparams-Funktion ausgeführt, dann finden wir im if von Zeile 60 heraus Wenn das Verzeichnis vorhanden ist, in dem die Suche durchgeführt werden sollWenn es existiert, wird eine leere Zeile angezeigt, die Befehl finden mit der Adresse des Verzeichnisses, in dem die Suche durchgeführt werden soll, gefolgt vom Muster (Beginn des Namens der gesuchten Datei) eine neue Leerzeile und Verwendung $ verlassen? Wir vertrauen die Ausgabe unseres Skripts dem Ergebnis von find an. Im Falle der Bedingung von Verzeichnis Existenz ist falsch (Zeile 67) Wir rufen die Nodir-Funktion auf und Wir verlassen das Hotel, um eine abnormale Beendigung anzuzeigen.

Ausführung und Prüfung

$ encontrar
$ encontrar -a
$ encontrar -h
$ encontrar index aljflaskjf #directorio no existe
$ encontrar index public_html
$

En folgende Artikel über Bash Wir werden die Mechanismen für sehen Verwenden Sie Parameter in FunktionenWir werden auch sehen, wie es geht Rückgabedaten artikulieren davon.

Ich hoffe und hoffe, dass dieser Beitrag für Sie nützlich war.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Josiah sagte

    Hallo,
    sehr interessant und sehr klar.
    Nur eine Notiz; In Zeile 68 vor der Variablen EXIT_BAD fehlt ein $.
    Ich werde mit Sicherheit weiter mit Ihren Artikeln lernen.