So erstellen Sie einfache Shell -Skripte unter Linux

So erstellen Sie einfache Shell -Skripte unter Linux

Das Erstellen von Shell -Skripten ist eine der wichtigsten Fähigkeiten, die Linux -Benutzer an der Spitze ihrer Finger haben sollten. Shell -Skripte spielen eine enorme Rolle bei der Automatisierung von sich wiederholenden Aufgaben, die ansonsten mühsame Ausführungszeile für Linie sein würden.

In diesem Tutorial zeigen wir einige der grundlegenden Shell -Skriptvorgänge, die jeder Linux -Benutzer haben sollte.

1. Erstellen Sie ein einfaches Shell -Skript

Ein Shell -Skript ist eine Datei, die umfasst ASCII Text. Wir werden zunächst ein einfaches Shell -Skript erstellen, und um dies zu tun, werden wir einen Texteditor verwenden. Es gibt eine ganze Reihe von Textredakteuren, sowohl Befehlszeilen als auch GUI-basierte. Für diesen Leitfaden werden wir den VIM -Editor verwenden.

Wir werden zunächst ein einfaches Skript erstellen, das anzeigt “Hallo Welt”Wenn ausgeführt.

$ vim Hallo.Sch 

Fügen Sie den folgenden Inhalt in die Datei ein und speichern Sie.

#!/Bin/Bash # Print Hello World Message Echo "Hallo Welt!" 

Lassen Sie uns die Shell -Skriptlinie per Linie durchgehen.

  • Die erste Zeile - #!/Bin/Bash - ist als Shebang Header bekannt. Dies ist ein spezielles Konstrukt, das angibt, mit welchem ​​Programm das Skript interpretiert wird. In diesem Fall wird dies der sein verprügeln Hülle angezeigt durch /Bin/Bash. Es gibt andere Skriptsprachen wie z Python das ist mit gekennzeichnet durch #!/usr/bin/python3 Und Perl dessen Scheing -Header ist von bezeichnet durch #!/usr/bin/perl.
  • Die zweite Zeile ist ein Kommentar. Ein Kommentar ist eine Erklärung, die beschreibt, was ein Shell -Skript tut und nicht ausgeführt wird, wenn das Skript ausgeführt wird. Kommentaren gehen immer das Hash -Zeichen voraus #.
  • Die letzte Zeile ist der Befehl, der die 'druckt'Hallo Welt'Nachricht auf dem Terminal.

Der nächste Schritt besteht darin, das Skript ausführbar zu machen, indem die Ausführung der Berechtigung mit dem zugewiesen wird Chmod Befehl wie gezeigt.

$ chmod +x Hallo.Sch 

Führen Sie schließlich das Shell -Skript mit einem der Befehle aus:

$ bash Hallo.sh oder $ ./Hallo.Sch 
Erstellen Sie Hello World Shell Skript

2. Verwenden von bedingten Anweisungen zum Ausführen von Code

Wie andere Programmiersprachen, Bedingte Aussagen werden im Bash -Skripting verwendet, um Entscheidungen zu treffen, wobei nur eine geringfügige Unterschiede in der Syntax. Wir werden die abdecken Wenn, ansonsten, Und elif Bedingte Aussagen.

Beispiel nur für eine IF -Anweisung

Der Wenn Die Anweisung kann verwendet werden, um einzelne oder mehrere Bedingungen zu testen. Wir werden mit der grundlegenden Verwendung des Wenn Aussage zum Testen einer einzelnen Bedingung. Der Wenn Aussage wird durch die definiert Wenn… fi Blöcke.

Wenn Befehl dann Anweisung Fi 

Schauen wir uns das Shell -Skript unten an.

#!/bin/bash echo 'Geben Sie die Punktzahl ein' Read x if [[$ x == 70]]; Dann wiederhole gute Arbeit!'fi 

Das obige Shell -Skript fordert den Benutzer auf, eine Punktzahl anzugeben, die dann in einer Variablen gespeichert wird X. Wenn die Punktzahl entspricht 70, Das Skript gibt die Ausgabe zurück “Gut gemacht!”. Der Vergleichsbetreiber == wird verwendet, um zu testen, ob die Punktzahl eingegeben wurde und in der Variablen gespeichert ist X, ist äquivalent zu 100.

Wenn Anweisung im Shell -Skript

Weitere Vergleichsbetreiber, die Sie verwenden können, sind:

  • -Gl - Gleich
  • -ne - Nicht gleichzusetzen mit
  • -lt - Weniger als
  • -Le - Gleich oder kleiner als
  • -lt - Weniger als
  • -Ge - Größer als oder gleich wie

Zum Beispiel die Wenn Sie sich befinden Block unten druckt aus. 'Härter arbeiten'Wenn der Eingangsbewertung einen Wert weniger als 50.

wenn [[$ x -lt 50]]; dann arbeite härter an!'fi 
Wenn Anweisung im Shell -Skript

Beispiel einer IF-ELSE-Anweisung

In Situationen, in denen Sie zwei mögliche Ergebnisse haben: - ob dies oder das - die IF -ELSE -Aussage ist praktisch erhoben.

Wenn Befehl dann Anweisung 1 Anweisung2 fi 

Das folgende Skript liest die Eingabebewertung und überprüft, ob es größer ist als oder gleich 70.

Wenn die Punktzahl größer ist als oder gleich zu 70, du bekommst ein 'Großartige Arbeit, Sie haben bestanden!' Nachricht. Wenn die Punktzahl jedoch unterhalb fällt 70, die Ausgabe 'Du hast versagt'wird gedruckt.

#!/bin/bash echo 'Geben Sie die Punktzahl ein' Read x if [[$ x -ge 70]]; Dann wiederhole ich einen tollen Job, du hast bestanden!'sonst echo' du versagst 'fi 
IF-ELSE-Anweisung im Shell-Skript

Beispiel einer IF-ELIF-ELSE-Anweisung

In Szenarien, in denen es mehrere Bedingungen und unterschiedliche Ergebnisse gibt, die If-elif-else Anweisung wird verwendet. Diese Aussage nimmt das folgende Format an.

Wenn Bedingung 1 dann Anweisung1 Elif Condition2, dann Anweisung2 else Anweisung3 fi 

Zum Beispiel haben wir ein Skript für eine Lotterie, die überprüft, ob die eingegebene Nummer entweder ist 90, 60 oder 30.

#!/bin/bash echo 'Geben Sie die Punktzahl ein' Read x if [[$ x -eq 90]]; dann echo „Sie haben den ersten Preis gewonnen“ ELIF [[$ x -eq 60]]; dann echo „Sie haben den zweiten Preis gewonnen“ ELIF [[$ x -eq 30]]; dann echo "du hast den zweiten Preis gewonnen" sonst echo "Bitte versuchen Sie es noch einmal" Fi 
IF-ELIF-ELSE-Aussage

3. Verwenden der IF -Anweisung mit und Logik

Du kannst den ... benutzen Wenn Aussage neben dem UND Logischer Operator, um eine Aufgabe auszuführen, wenn zwei Bedingungen erfüllt sind. Der && Der Bediener wird verwendet, um die zu bezeichnen UND Logik.

#!/bin/bash echo 'Bitte geben Sie Ihre user_id' read user_id echo 'Bitte ein. Bitte geben Sie Ihre tag_no' read tag_id iid if [[($ user_id == ’tecmint“ && $ tag_id -eq 3990)]] dann wiedergeben "Login erfolgreich" sonst wieder 

5. Verwenden der IF -Anweisung mit oder Logik

Bei Verwendung der ODER Logik, das wird dargestellt durch || Symbol, eine der Bedingungen muss mit dem Skript zufrieden sein, um die erwarteten Ergebnisse zu erzielen.

#!/bin/bash echo 'Bitte geben Sie eine Zufallsnummer ein “Lesen Sie die Nummer, wenn [[(Nummer -eq 55 || Nummer -eq 80)]]; dann echo herzlichen Glückwunsch! Sie haben "else echo" sorry, versuchen Sie es erneut 
Wenn Anweisung mit oder Logik

Verwenden Sie Schleifenkonstrukte

Verprügeln Schleifen Ermöglichen Sie den Benutzern, eine Reihe von Aufgaben auszuführen, bis ein bestimmtes Ergebnis erzielt wird. Dies ist praktisch bei der Ausführung sich wiederholter Aufgaben. In diesem Abschnitt werden wir einen Blick auf einige der Loops werfen, die Sie auch in anderen Programmiersprachen finden würden.

While-Schleife

Dies ist eine der einfachsten Schleifen, mit denen man arbeiten kann. Die Syntax ist recht einfach:

Während DO -Befehle erledigt 

In der WHLE -Schleife unten werden alle Zahlen von 1 bis 10 aufgeführt, wenn sie ausgeführt werden.

#!/bin/bash # a einfach während Schleifenzähler = 1 während [$ counter -le 10] Echo $ counter ((counter ++)) erledigt 

Lassen Sie uns die while -Schleife abgeben:

Die Variable Schalter wird initialisiert zu 1. Und während die Variable kleiner als oder gleich ist 10, Der Wert des Zählers wird erhöht, bis die Bedingung erfüllt ist. Die Linie Echo $ counter druckt alle Zahlen von 1 bis 10.

Während der Schleife im Shell -Skript

Für Schleife

Wie die Weile Schleife, A Für Schleife wird verwendet, um iterativ Code auszuführen. ICH.e. Wiederholen Sie die vom Benutzer definierte Codeausführung so oft wie möglich.

Die Syntax ist:

für var in 1 2 3 4 5 n do command1 command2 erledigt 

Der Für Schleife Iteriert nach unten 1 bis 10 und verarbeitet ihre Werte auf dem Bildschirm.

Für Schleife im Shell -Skript

Eine bessere Möglichkeit, dies zu erreichen wie gezeigt, anstatt alle Zahlen zu tippen.

#!/bin/bash # Bereich in einer für die Schleife für Num in 1… 10 do echo $ num erledigt angeben 

Bash -Positionsparameter

Ein Positionsparameter ist eine spezielle Variable, auf die im Skript verwiesen wird, wenn Werte an der Shell übergeben werden, aber nicht zugewiesen werden kann. Positionsparameter von abgeleitet von $ 0 $ 1 $ 2 $ 3… Zu $ 9. Über den $ 9 Wert, die Parameter müssen in Curly -Klammern e eingeschlossen sein e.G $ 10, $ 11… usw.

Bei der Ausführung des Skripts ist der erste Positionsparameter der Position $ 0 Nimmt den Namen des Shell -Skripts an. Der $ 1 Der Parameter nimmt die erste Variable an, die am Terminal übergeben wird, $ 2 nimmt die zweite, $ 3 der dritte und so weiter.

Lassen Sie uns einen Skripttest erstellen.Sh wie gezeigt.

#!/bin/bash echo "Der Name des Skripts lautet:" $ 0 echo "Mein Vorname ist:" $ 1 echo "Mein zweiter Name ist:" $ 2 

Führen Sie als Nächstes das Skript aus und geben Sie den ersten und zweiten Namen als Argumente an:

# Bash -Test.Sh James Kiarie 
Bash -Positionsparameter

Aus der Ausgabe können wir sehen, dass die erste gedruckte Variable der Name des Shell -Skripts ist, in diesem Fall, prüfen.Sch. Danach werden die Namen entsprechend den in der Shell -Skript definierten Positionsparametern ausgedruckt.

Positionsparameter sind dadurch nützlich, als sie Ihnen helfen, die eingegebenen Daten anzupassen, anstatt explizit einen Wert einer Variablen zuzuweisen.

Shell Command Exit Codes

Beginnen wir zunächst eine einfache Frage, was ist ein Code beenden?

Jeder Befehl, der von einem Benutzer- oder Shell -Skript auf der Shell ausgeführt wird. Ein Exit -Status ist eine Ganzzahl.

Ein Exit -Status von 0 impliziert, dass der Befehl erfolgreich ohne Fehler ausgeführt wurde. Alles dazwischen 1 bis 255 zeigt, dass der Befehl fehlgeschlagen ist oder nicht erfolgreich ausgeführt wurde.

Verwenden Sie das Beendenstatus eines Befehls, um den Beenden -Status eines Befehls zu finden $? Shellvariable.

Ein Exit -Status von 1 verweist auf einen allgemeinen Fehler oder unzulässige Fehler wie das Bearbeiten von Dateien ohne Sudo -Berechtigungen.

Ein Exit -Status von 2 Punkten zur falschen Verwendung eines Befehls oder einer integrierten Shell -Variablen.

Der Status von 127 beendet auf einen illegalen Befehl, der normalerweise die 'ergibt'Befehl nicht gefunden' Fehler.

Suchen Sie den Beendenstatus des Befehls

Verarbeitungsausgabe von Shell -Befehlen innerhalb eines Skripts

Beim Bash -Scripting können Sie die Ausgabe eines Befehls in einer Variablen für die zukünftige Verwendung speichern. Dies wird auch als Shell Command -Substitution bezeichnet und kann auf folgende Weise erreicht werden.

variable = $ (Befehl) oder variable = $ (/path/to/command) oder variable = $ (Befehlsargument 1 Argument 2…) 

Zum Beispiel können Sie die speichern Datum Befehl in einer Variablen genannt Heute Rufen Sie das Shell -Skript an, um das aktuelle Datum anzuzeigen.

#!/bin/bash heute = $ (Datum) echo „Heute ist heute $“ 
Datum mit dem Shell -Skript drucken

Nehmen wir ein anderes Beispiel. Angenommen, Sie möchten die gültigen Login -Benutzer auf Ihrem Linux -System finden. Wie würdest du vorgehen? Erstens wird die Liste aller Benutzer (sowohl System-, Prozess- als auch Login -Benutzer) in der gespeichert /etc/passwd Datei.

Um die Datei anzuzeigen, müssten Sie den CAT -Befehl verwenden. Um sich einzugrenzen, um Benutzer anzumelden, verwenden Sie den Befehl Grep, um mit dem Benutzer nach Benutzern zu suchen /Bin/Bash zuschreiben und verwenden die Schnitt -c 1-10 Befehl wie gezeigt, um die ersten 10 Zeichen der Namen anzuzeigen.

Wir haben die gespeichert Katzenbefehl zum login_users Variable.

#!/bin/bash login_users = $ (cat/etc/passwd | grep/bin/bash | cut -c 1-10) echo 'Dies ist die Liste der Login -Benutzer: echo $ login_users 
Listen Sie in den Benutzern an

Dies bringt unser Tutorial zum Erstellen einfacher Shell -Skripte zum Ende. Wir hoffen, Sie haben das wertvoll gefunden.