Website-Suche

So schreiben und verwenden Sie benutzerdefinierte Shell-Funktionen und -Bibliotheken


Unter Linux helfen uns Shell-Skripte auf vielfältige Weise, unter anderem bei der Durchführung oder sogar Automatisierung bestimmter Systemverwaltungsaufgaben, der Erstellung einfacher Befehlszeilentools und vielem mehr.

In diesem Handbuch zeigen wir neuen Linux-Benutzern, wo sie benutzerdefinierte Shell-Skripte zuverlässig speichern können, erklären, wie sie benutzerdefinierte Shell-Funktionen und -Bibliotheken schreiben und Funktionen aus Bibliotheken in anderen Skripten verwenden.

Wo werden Shell-Skripte gespeichert?

Um Ihre Skripte auszuführen, ohne einen vollständigen/absoluten Pfad einzugeben, müssen sie in einem der Verzeichnisse in der Umgebungsvariablen ` PATH gespeichert werden.

Um Ihren ` PATH zu überprüfen, geben Sie den folgenden Befehl ein:

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Wenn das Verzeichnis bin im Home-Verzeichnis eines Benutzers vorhanden ist, wird es normalerweise automatisch in dessen ` PATH aufgenommen. Hier können Sie Ihre Shell-Skripte speichern.

Erstellen Sie daher das Verzeichnis bin (in dem auch Perl-, Awk- oder Python-Skripte oder andere Programme gespeichert sein können):

mkdir ~/bin

Erstellen Sie als Nächstes ein Verzeichnis mit dem Namen lib (kurz für Bibliotheken), in dem Sie Ihre eigenen Bibliotheken aufbewahren. Sie können darin auch Bibliotheken für andere Sprachen wie C, Python usw. aufbewahren. Erstellen Sie darunter ein weiteres Verzeichnis mit dem Namen sh; Dadurch werden insbesondere Ihre Shell-Bibliotheken gespeichert:

mkdir -p ~/lib/sh 

Erstellen Sie Ihre eigenen Shell-Funktionen und Bibliotheken

Eine Shell-Funktion ist eine Gruppe von Befehlen, die eine spezielle Aufgabe in einem Skript ausführen. Sie funktionieren ähnlich wie Prozeduren, Unterprogramme und Funktionen in anderen Programmiersprachen.

Die Syntax zum Schreiben einer Funktion lautet:

function_name() { list of commands }

Beispielsweise können Sie in einem Skript eine Funktion schreiben, um das Datum wie folgt anzuzeigen:

showDATE() {date;}

Jedes Mal, wenn Sie das Datum anzeigen möchten, rufen Sie einfach die obige Funktion mit ihrem Namen auf:

showDATE

Eine Shell-Bibliothek ist einfach ein Shell-Skript. Sie können jedoch eine Bibliothek schreiben, um nur Ihre Funktionen zu speichern, die Sie später von anderen Shell-Skripten aufrufen können.

Unten ist ein Beispiel einer Bibliothek namens libMYFUNCS.sh in meinem Verzeichnis ~/lib/sh mit weiteren Funktionsbeispielen:

#!/bin/bash 

#Function to clearly list directories in PATH 
showPATH() { 
        oldifs="$IFS"   #store old internal field separator
        IFS=:              #specify a new internal field separator
        for DIR in $PATH ;  do echo $DIR ;  done
        IFS="$oldifs"    #restore old internal field separator
}

#Function to show logged user
showUSERS() {
        echo -e “Below are the user logged on the system:\n”
        w
}

#Print a user’s details 
printUSERDETS() {
        oldifs="$IFS"    #store old internal field separator
        IFS=:                 #specify a new internal field separator
        read -p "Enter user name to be searched:" uname   #read username
        echo ""
       #read and store from a here string values into variables using : as  a  field delimiter
    read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep   "^$uname")"
       #print out captured values
        echo  -e "Username is            : $username\n"
        echo  -e "User's ID                 : $uid\n"
        echo  -e "User's GID              : $gid\n"
        echo  -e "User's Comments    : $comments\n"
        echo  -e "User's Home Dir     : $homedir\n"
        echo  -e "User's Shell             : $shell\n"
        IFS="$oldifs"         #store old internal field separator
}

Speichern Sie die Datei und machen Sie das Skript ausführbar.

So rufen Sie Funktionen aus einer Bibliothek auf

Um eine Funktion in einer lib zu verwenden, müssen Sie zunächst die lib in das Shell-Skript einbinden, in dem die Funktion verwendet werden soll, und zwar in der folgenden Form:

./path/to/lib
OR
source /path/to/lib

Sie würden also die Funktion printUSERDETS aus der Bibliothek ~/lib/sh/libMYFUNCS.sh in einem anderen Skript verwenden, wie unten gezeigt.

Sie müssen in diesem Skript keinen weiteren Code schreiben, um die Details eines bestimmten Benutzers auszudrucken. Rufen Sie einfach eine vorhandene Funktion auf.

Öffnen Sie eine neue Datei mit dem Namen test.sh:

#!/bin/bash 

#include lib
.  ~/lib/sh/libMYFUNCS.sh

#use function from lib
printUSERDETS

#exit script
exit 0

Speichern Sie es, machen Sie das Skript dann ausführbar und führen Sie es aus:

chmod 755 test.sh
./test.sh 

In diesem Artikel haben wir Ihnen gezeigt, wo Sie Shell-Skripte zuverlässig speichern, wie Sie Ihre eigenen Shell-Funktionen und Bibliotheken schreiben und Funktionen aus Bibliotheken in normalen Shell-Skripten aufrufen.

Als nächstes erklären wir eine einfache Möglichkeit, Vim als IDE für Bash-Skripting zu konfigurieren. Bleiben Sie bis dahin immer mit TecMint in Verbindung und teilen Sie uns auch Ihre Gedanken zu diesem Leitfaden über das unten stehende Feedback-Formular mit.