GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Scripting(I)

Dies ist der erste Artikel einer Serie, die sich auf Gnu Bash-Skripting konzentriert. Es ist kein vollständiger Kurs über Bash-Programmierung, aber am Ende sollten Sie ein oder zwei Dinge lernen. Nützliche Dinge, die Ihnen das Leben leichter machen.

Faulheit ist der Schlüssel zum Erfolg

Manchmal muss ich Befehl1 ausführen, gefolgt von Befehl2, dann Befehl3 und schließlich Befehl4. Nach einer Weile muss ich diese Befehlsfolge wiederholen. Aber da ich sehr schlau bin, bin ich mit der Pfeiltaste nach oben durch die Befehlsgeschichte gegangen, damit ich nicht noch einmal alles schreiben muss.

Dann, nach einer Weile, muss ich es wieder tun, und ich weiß, dass ich es in Zukunft mehrmals wiederholen muss. Beispielsweise starten Sie jeden Tag Ihren Computer, melden sich bei Ihrem Debian-basierten Linux an und suchen nach Paketaktualisierungen:

# apt-get update
(...)
# apt-get upgrade
(...)
# apt-get dist-upgrade

Anstatt diese 52 Zeichen jedes Mal einzugeben, könnten Sie sie in ein Skript wie dieses einfügen:

#!/bin/bash
#this is not a Hello world
apt-get update
apt-get upgrade
apt-get dist-upgrade

Sie können dieses Skript als „up.sh“ speichern und am nächsten Morgen nach der Anmeldung einfach ausführen:./up.sh . Einfach so hast du 44 Tastenanschläge gespart, wirst du faul oder was?.

Nein, sind wir nicht, wenn Sie versuchen, es „wie es ist“ auszuführen, erhalten Sie einen schönen Permission denied error . Das liegt daran, dass ich nie gesagt habe, dass ich die Ausführungserlaubnis festlegen soll:

# chmod +x up.sh

Später zeige ich dir, wie du noch fauler sein kannst.

Neben den Befehlen in den letzten Zeilen ist Ihnen das Nummernzeichen (#) in den ersten beiden Zeilen aufgefallen. Die allererste Zeile heißt shebang und teilt dem System mit, mit welchem ​​Interpreter die Befehle im Skript ausgeführt werden.

Das zweite ist nur ein Kommentar und Sie können es überall platzieren:Was hinter diesem Zeichen steht, wird ignoriert. Zum Beispiel:

# this is a comment
command1 # this also is a comment. Should explain what that command do
#command2. # This was command... but as was commented out, bash would ignore it

Es ist wichtig (zumindest für mich), mindestens ein paar Kommentare hinzuzufügen, um sich daran zu erinnern, was das Skript tut und warum. Außerdem können Sie in großen Skripten Kommentare hinzufügen, um Blöcke oder Abschnitte oder Teile des Skripts zu erklären. Kommentare werden Ihnen helfen, wenn Sie einige Monate oder Wochen oder sogar Tage später zu Ihrem Drehbuch zurückkehren.

Fauler werden

Sie müssen nicht jedes Mal tippen, wenn wir uns bei unseren Systemen anmelden. Wir können den Computer dazu bringen, dieses Skript für uns auszuführen. Sie können die Zeile „./up.sh hinzufügen ” an einer der folgenden Stellen:

  • .bashrc . Dadurch wird das Skript jedes Mal ausgeführt, wenn Sie eine Nicht-Login-Shell starten (d. h. das auf Ihrem Desktop enthaltene Terminal, wie xterm)
  • .bash_profile Dies ist für die Login-Shell, zum Beispiel wenn Sie Ihren Benutzer und Ihr Passwort auf der Konsole eingeben oder sich über ssh in Ihr System einloggen.
  • .xinitrc wie .bashrc, aber für grafische Sitzungen. Sie verwenden wahrscheinlich einen modernen Desktop mit eigenen Tools zum automatischen Starten von Anwendungen, verwenden Sie diese.
  • Ein Eintrag in Ihrer crontab-Datei, damit es regelmäßig ausgeführt wird.

Variablen

Wir brauchen „etwas“, um Werte zu speichern, zum Beispiel Benutzereingaben, einen Parameter von der Befehlszeile. Dieses „Etwas“ ist eine Variable. Ich gehe übrigens davon aus, dass Sie bereits wissen, was eine Variable ist.

Um eine Variable zu deklarieren, können Sie

  • einem Variablennamen einen Wert zuweisen. Beispiel:x=1
  • geben Sie den Benutzer für einen Wert mit dem Lesebefehl ein:read x
  • ein Parameter von der Kommandozeile. Darauf komme ich bald zurück
  • Es gibt andere Möglichkeiten, eine Variable zu definieren, die wir später sehen werden

Um eine Variable „aufzurufen“, geben Sie das Dollarzeichen gefolgt vom Variablennamen ein. Wenn wir zum Beispiel den Wert für die Variable $x auf dem Bildschirm ausgeben wollen:

echo "x value: $x"
echo "Type y vaue:"
read y
echo "You typed: $y"

Befehlszeilenparameter werden in nummerierten Variablen gespeichert. Wenn Sie beispielsweise das erste Argument verwenden, rufen Sie die Variable $1 auf. Rufen Sie für den 2. $2 an. Und so weiter. Die Variable $0 speichert den Namen der Skriptdatei. In meinem ersten Nicht-ein-Hallo-Welt-Beispiel ist der Wert für $0 „up.sh“.

Arrays

Arrays werden auf die gleiche Weise definiert, jedoch mit den Werten in runden Klammern. So:

array=(uno dos tres)

Sie können dem Array später weitere Werte hinzufügen, indem Sie den Index in eckige Klammern setzen:

array[3]=cuatro

Sie können ein Array-Element mit geschweiften Klammern für den Array-Namen und eckigen Klammern für die Elementposition (beginnend mit 0) „aufrufen“:

$ echo ${array[0]}
uno

Wenn Sie die geschweiften Klammern nicht verwenden, gibt bash eine wörtliche [Elementposition] aus, zum Beispiel:

$ echo $array[0]
uno[0]

Sie können das gesamte Array mit einem @ als Index wie folgt aufrufen:

$ echo ${array[@]}
uno dos tres cuatro

Schließlich können Sie die Anzahl der Elemente eines Arrays mit dem Hash-Zeichen (dasselbe, das ich zuvor für Kommentare erwähnt habe) wie folgt erhalten:

echo ${#array[@]}
4

Es gibt viele andere Dinge, die wir mit Arrays und anderen Array-Typen, wie assoziativen Arrays, machen können. Aber das reicht für heute.

Bleib dran

Bisher habe ich nichts sehr „woaaah gezeigt “. Es gibt nicht einmal einen einzigen Screenshot in diesem Artikel. Aber meine Absicht gegen Ende dieser Serie von vielleicht drei oder mehr Artikeln ist es, Werkzeuge zu geben, um etwas Nützliches zu tun. Ich weiß nicht, ob Sie ein Bash-Scripting-Guru werden, aber Sie können es versuchen 😉

Im nächsten werde ich einige Kontrollstrukturen, Pipelines und Umleitungen behandeln. In der Zwischenzeit können Sie die Bash-Manpage überprüfen, aber zumindest für mich ist sie etwas verwirrend


Linux
  1. Bash Dynamische (Variable) Variablennamen?

  2. So vergleichen Sie Zeichenfolgen in Bash Shell-Skripten

  3. Überprüfen Sie, ob eine Variable in einer Liste in Bash vorhanden ist

  4. Übergeben von grep an eine Variable in bash

  5. bash - Vergleich der Variablen ohne Berücksichtigung der Groß-/Kleinschreibung

Bash-Scripting – String-Manipulation

Bash-Skripting – Case-Statement

Bash-Skripting (II)

Bash-Scripting(III)

So setzen Sie die Umgebungsvariable in Bash

Bash Beginner Series #2:Variables in Bash Shell Scripting verstehen