Practices für Programmierprogramme verprügeln

Practices für Programmierprogramme verprügeln
Bash ist eine der beliebtesten Shells unter Linux. Es ist einfach, schnell und leicht. Neben der Interpretation und Ausführung von Befehlen kann Bash mit Skripten arbeiten, um eine bestimmte Reihe von Aufgaben zu automatisieren.

Dieser Leitfaden erläutert einige der gängigen Praktiken bei der Bash -Programmierung.

Bash Scripting

Bash ist ein Shell -Programm, das für die Interpretation und Ausführung von Befehlen verantwortlich ist. Neben der Ausführung von manuellen Befehlen unterstützt Bash auch Scripting. Diese Skripte sind eine Reihe von Befehlen, die in einer Textdatei deklariert sind. Bash Scripting ist eine einfache und zugängliche Programmiersprache, die Sie unter Linux lernen können. Es ist eine Voraussetzung, wenn Sie an Systemverwaltungsjobs interessiert sind.

Wie jede andere Fähigkeit hilft Ihnen die Ausdauer und Wiederholung, sich zu verbessern. Obwohl es keine festen Regeln gibt, finden Sie hier einige der Gewohnheiten, die Ihre Skriptqualität erheblich verbessern können.

Richtige Eindrücke
Die Einkerbung ist ein großer Teil der Codierung. Die ordnungsgemäße Eindrücke ist von größter Bedeutung, um einen lesbaren und wartbaren Code zu haben.

Die richtige Eindrücke kann ein Lebensretter sein, wenn Sie mit mehreren Logikebenen arbeiten. Die Einkerbung erleichtert es leicht, die Logikschichten zu erkennen.

Hier ist ein Beispiel für ein multi-logisches Skript mit ordnungsgemäß.

#!/Bin/Bash
Lesen Sie -p "Ein Wert eingeben" var_x
if [$ ((var_x%2)) -Eq 0]; Dann
beenden 0
anders
Ausgang 1
fi

So sieht der Code ohne richtige Eindrücke aus.

#!/Bin/Bash
Lesen Sie -p "Ein Wert eingeben" var_x
if [$ ((var_x%2)) -Eq 0]; Dann
beenden 0
anders
Ausgang 1
fi

Kommentieren
Das Kommentieren ist eines der wichtigsten Dinge, wenn es darum geht, Codes zu verstehen. Kommentare sollten verschiedene Teile des Codes erklären, insbesondere wenn er komplex ist. Es ist mühelos, sich über mehrere Teile des Code zu verwirren, sogar über Ihre eigenen Codes. Wenn es ein großes Projekt ist und andere in Zukunft wahrscheinlich an demselben Code arbeiten werden.

Zum Beispiel finden Sie ein Beispielskript mit und ohne Kommentare.

Benutzername = $ 1
# Benutzername Existenz überprüfen
grep ^$ username: /etc /passwd
Wenn [$? != 0]; Dann
echo "kein solcher Benutzer: $ username"
Ausgang 1
fi
Benutzer = $ 1
grep ^$ username: /etc /passwd
Wenn [$? != 0]; Dann
echo "$ username nicht gefunden"
Ausgang 1
fi

Rückgabecode, wenn etwas schief geht
Wenn etwas schief geht, ist es immer eine gute Idee, einen Wert ungleich Null zurückzugeben. Ein Code kann an jedem Punkt schief ausgeführt werden, insbesondere bei Bedingungen. Wenn Sie mit einem Rückgaberocode arbeiten, können Sie eine Menge Ärger sparen. Es macht das Debuggen effektiver.

In diesem Beispiel werden wir feststellen, ob eine Zahl ungerade oder sogar ist. Anstatt die Ausgabe zu drucken, signalisiert der Ausgangscode, was das Ergebnis war.

#!/Bin/Bash
Lesen Sie -p "Ein Wert eingeben" var_x
if [$ ((var_x%2)) -Eq 0]; Dann
beenden 0
anders
Ausgang 1
fi

Das Skript existiert beim Fehler
In vielen Situationen wird Bash das Skript weiter ausführen, auch wenn ein bestimmter Teil fehlschlägt und den Rest des Skripts schlecht beeinflusst.

Um sicherzustellen, dass das Skript vor einem tödlichen Fehler vorhanden ist, wird empfohlen, zu Beginn die folgenden Zeilen zu haben.

$ set -o errexit

Manchmal kann Bash auch versuchen, eine nicht deklarierte Variable zu verwenden, was zu einem logischen Fehler führt. Wenn Sie den folgenden Befehl verwenden.

$ set -o nounset

Befehlssubstitution
In Situationen müssen Sie möglicherweise mit der Ausgabe eines bestimmten Befehls arbeiten. Wir können es mit der Befehlssubstitution tun.

Befehlsumspannung hat unterschiedliche Umsetzungsmethoden.

$ echo 'echo "Hallo Welt"'
$ echo $ (echo „Hallo Welt)

Es wird immer empfohlen, die zweite Option zu verwenden

Sinnvoller variabler Name
Variablen sind ein wesentlicher Bestandteil eines komplexen Bash -Skripts. Jede Variable sollte einen richtigen Namen haben, der ihre Verwendung bedeutet.

Oft können Namensmuster auch Zeit haben; Menschen vermeiden es, ein paar zusätzliche Charaktere im Austausch für den kurzfristigen Zeitgewinn einzugeben. Eine solche Praxis ist jedoch ein Rezept für eine Katastrophe. Wenn es um die langfristige Wartung eines solchen Code geht, kann es kompliziert sein, einen Sinn für eine Variable zu erfüllen.

Es wäre am besten, wenn Sie auch konsequent in der Benennung von Variablen wäre. Zufällige Variablennamenmuster können auch in Zukunft zu Verwirrung führen.

Schauen Sie sich die beiden Beispielcodes an, die beide dieselbe Aufgabe erledigen. Mit welchem ​​Code ist es besser zu verstehen und zu arbeiten?

#!/Bin/Bash
Lesen -p "Länge eingeben:" x
Lesen -p "Eingeben Sie Breite:" Y
z = $ [$ x*$ y]
Echo "Bereich: $ Z"
#!/Bin/Bash
Lesen -p "Länge eingeben:" Länge
Lesen Sie -p "Breite eingeben:" Breite
Area = $ [$ Länge*$ width]
Echo "Bereich: $ Bereich"

In Bash werden alle Umgebungsvariablen mit Großbuchstaben benannt. Es wird empfohlen, Kleinbuchstaben für Skriptvariablen zu verwenden, um Konflikte zu vermeiden.

Funktionen verwenden
Bei der Bash -Programmierung ist eine Funktion eine Möglichkeit, Befehle zu gruppieren, die später ausgeführt werden können. Es hilft bei der Reduzierung der Code -Wiederholung. Funktionen machen den Code auch lesbarer und wartbarer.

Jetzt gibt es bestimmte Szenarien, in denen Funktionen sinnvoll sind. Wenn Sie eine Handvoll fokussierter Befehle verwenden, können Sie eine Menge Ärger sparen. Wenn Sie nur einen Befehl verwenden, hat eine Funktion keinen Einfluss auf die Effizienz.

Wie Variablen sollten die Funktionsnamen sinnvoll sein.

Funktion fn_odd ()
Lokale var_x
Lesen Sie -p "Number eingeben" var_x
Lesen Sie var_x
if [$ ((var_x % 2)) -Eq 0]; Dann
echo "sogar"
anders
echo "seltsam"
fi

Argumententypen
In Bash gibt es keinen festen Weg, einen variablen Typ zu deklarieren. Es kann zum Vergleich von Variablen widersprüchlicher Datentypen führen. Wenn Sie sicherstellen, dass die Variablen und Argumente der gleiche erwartete Typ sind, sparen Sie viele Kopfschmerzen.

Im folgenden Beispiel wird das Skript ausdrucken, ob das Argument eine Nummer ist oder nicht.

Wenn ! ["$ 1" -Eq "$ 1" 2> /dev /null]
Dann
Echo "Fehler: nicht Nummer"
Ausgang 1
fi

Fehlende Argumente oder falsche Argumentationsreihenfolge
Es ist immer eine gute Idee anzunehmen, dass die Benutzereingaben wahrscheinlich falsche Daten haben, egal was. Die Wahrscheinlichkeit ist höher, wenn der Benutzer mehr als ein Argument eingeben muss.

Sie müssen Fehlerkorrekturmechanismen an den Benutzereingabepunkten haben, um eine Katastrophe aufgrund falscher Benutzereingaben zu vermeiden. Machen Sie die Anweisung klar, was der Benutzer tun soll.

Richtige Ausgabe
Wenn Sie Ihre Skripte ausführen, sollten die Leute wissen, was sie wissen müssen. Sie sollten Ihren Code nicht lesen müssen, um ihren Zweck oder das, was er tut, zu verstehen.

Auf dem Bildschirm sollte ein Feedback sein, in dem er erklärt, was bei jedem Schritt hinter den Kulissen vor sich geht. Wie wäre die Benutzererfahrung beispielsweise, wenn der Paketmanager in verschiedenen Phasen seines Betriebs keine aussagekräftige Ausgabe ausdruiert hätte??

Debuggen
Nach dem Schreiben des Skripts kann Bash die Skriptsyntax auf Fehler ohne Ausführung überprüfen. Verwenden Sie den folgenden BASH -Befehl, um eine Syntaxprüfung durchzuführen.

$ bash -nn

Alternativ kann der Shebang die Syntax zum Debug -Modus ermöglichen.

#!/bin/bash -n

Verwenden Sie zum Ausführen von Bash im Debug-Modus die Flag „-x“.

$ bash -xx

Es kann auch ein Teil des Shebangs sein.

#!/bin/bash -x

Abschließende Gedanken

Dies sind nur eine Handvoll Bash -Programmierpraktiken. Dies sind einfache, aber leistungsstarke Gewohnheiten, um sich zu entwickeln. Diese Tricks stellen sicher, dass Ihre Bash -Skripte optimiert, lesbar und zuverlässig sind. Sie möchten, dass Ihre Shell-Skripte einfach und unkompliziert sind und nicht so weit wie möglich mit sehr exotischen Syntax- oder Shell-Befehlen aussteigen müssen.

Happy Computing!