logo

Beispiele für Shell-Skripte

Bei allen Linux-Distributionen ist das Shell-Skript wie ein Zauberstab, der den Prozess automatisiert, Benutzern Zeit spart und die Produktivität steigert. Dieses Tutorial zur SOLL-Skripterstellung stellt Ihnen mehr als 25 SOLL-Skripting-Beispiele vor.

Aber bevor wir zum Thema übergehen Shell-Scripting Beispiele: Lassen Sie uns Shell-Skripte und die tatsächlichen Anwendungsfälle von Shell-Skripten verstehen.

Was ist Shell-Skript?

Nun, die Schale ist eine CLI ( Befehlszeileninterpreter ), das in einem Textfenster ausgeführt wird, in dem Benutzer Shell-Befehle verwalten und ausführen können. Andererseits wird der Prozess des Schreibens einer Reihe von Befehlen, die auf einem Linux-System ausgeführt werden sollen. Eine Datei, die solche Anweisungen enthält, wird als Bash-Skript bezeichnet.



Verwendung von Shell-Skripten

Im Folgenden sind einige häufige Verwendungszwecke von Shell Script aufgeführt:

  • Aufgabenautomatisierung – Es kann verwendet werden, um sich wiederholende Aufgaben wie regelmäßige Backups und Softwareinstallationsaufgaben zu automatisieren.
  • Anpassung - Man kann Shell-Skripte verwenden, um seine Befehlszeilenumgebung zu entwerfen und seine Aufgabe je nach Bedarf einfach auszuführen.
  • Dokumentenverwaltung - Die Shell-Skripte können auch zum Verwalten und Bearbeiten von Dateien und Verzeichnissen verwendet werden, beispielsweise zum Verschieben, Kopieren, Umbenennen oder Löschen von Dateien.

Beispiele für Shell-Skripte unter Linux

1) Was bedeutet das Shebang (#!) am Anfang eines Shell-Skripts?

Der Mist (#!) am Anfang eines Skripts gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll. Es teilt dem System mit, welche Shell oder welcher Interpreter die Befehle des Skripts interpretieren soll.

Zum Beispiel: Angenommen, wir haben ein Skript mit dem Namen myscript.sh geschrieben in der Bash-Shell:

Reverse-String in Java
Mist

Mist

In diesem Beispiel:

  • Das #!/bin/bash am Anfang des Skripts gibt an, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  • Die Echo-Befehle werden zum Drucken von Nachrichten an das Terminal verwendet.

2) Wie führt man ein Shell-Skript über die Befehlszeile aus?

Um ein Shell-Skript über die Befehlszeile auszuführen, müssen wir die folgenden Schritte ausführen:

  • Stellen Sie sicher, dass die Skriptdatei über ausführbare Berechtigungen verfügt chmod-Befehl :
chmod +x myscript.sh>
  • Führen Sie das Skript unter Verwendung seines Dateinamens aus:
./myscript.sh>

Hier muss ersetzt werden myscrtipt.sh mit Ihrem Skriptnamen.

3) Schreiben Sie ein Shell-Skript, das techcodeview.com auf dem Terminal ausgibt.

Erstellen Sie einen Skriptnamen „myscript.sh“ (wir verwenden „ Weil ` Editor, Sie können einen beliebigen Editor auswählen)

vim myscript.sh>

#!/bin/bash
# Dieses Skript druckt techcodeview.com auf dem Terminal
echo techcodeview.com

Namen drucken

Namen drucken

Wir machen unser Skript mit „chmod +x“ ausführbar, führen es dann mit „./myscipt.sh“ aus und erhalten die gewünschte Ausgabe techcodeview.com.

4) Erklären Sie den Zweck des Echo-Befehls beim Shell-Scripting.

Der Echo-Befehl dient der Anzeige von Texten oder Variablen auf dem Terminal. Es wird häufig zum Drucken von Nachrichten, Variablenwerten und zum Generieren von Programmausgaben verwendet.

434

Echo-Befehl

In diesem Beispiel haben wir „echo“ direkt auf dem Terminal ausgeführt, da es innerhalb des Shell-Skripts genauso funktioniert.

5) Wie kann man einer Variablen in einem Shell-Skript einen Wert zuweisen?

Variablen werden Werte mit dem Zuweisungsoperator = zugewiesen.

Zum Beispiel:

#!/bin/bash
# Einer Variablen einen Wert zuweisen
Name=Jayesh
Alter=21
echo $name $age

Erläuterung:

  • Der Namensvariablen wird der Wert Jayesh zugewiesen.
  • Der Altersvariable wird der Wert 21 zugewiesen.
  • echo wird zum Drucken verwendet und `$name` `$age` wird verwendet, um den in den Variablen gespeicherten Wert aufzurufen.

435

6) Schreiben Sie ein Shell-Skript, das den Namen eines Benutzers als Eingabe verwendet und ihn begrüßt.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash
# Fragen Sie den Benutzer nach seinem Namen
echo Wie heißt du?
Namen lesen
# Begrüßen Sie den Benutzer
echo Hallo, $name! Freut mich, Sie kennenzulernen.

Erläuterung:

  • #!/bin/bash: Das ist die Shebang-Zeile. Es weist das System an, den Bash-Interpreter zum Ausführen des Skripts zu verwenden.
  • # Fragen Sie den Benutzer nach seinem Namen: Dies ist ein Kommentar. Es bietet Kontext zum kommenden Code. Kommentare werden vom Interpreter ignoriert.
  • echo Wie heißt du?: Der echo-Befehl wird verwendet, um den Text in doppelten Anführungszeichen auf dem Terminal anzuzeigen.
  • Lesename: Der Lesebefehl wartet auf die Eingabe von Text durch den Benutzer und speichert ihn im Variablennamen.
  • echo Hallo, $name! Freut mich, Sie kennenzulernen.: Diese Zeile verwendet den echo-Befehl, um eine Begrüßungsnachricht zu drucken, die den Wert der Namensvariablen enthält, der aus der Benutzereingabe erfasst wurde.

436

7) Wie fügt man einem Shell-Skript Kommentare hinzu?

Kommentare im Shell-Scripting werden verwendet, um Erklärungen oder Kontext zum Code bereitzustellen. Sie werden vom Interpreter ignoriert und sind nur für Menschen gedacht, die das Skript lesen. Mit dem #-Symbol können Sie Kommentare hinzufügen.

#!/bin/bash
# Dies ist ein Kommentar, der den Zweck des Skripts erläutert
echo gfg

8) Erstellen Sie ein Shell-Skript, das prüft, ob eine Datei im aktuellen Verzeichnis vorhanden ist.

Hier ist ein Skript, das prüft, ob eine Datei namens example.txt im aktuellen Verzeichnis vorhanden ist:

#!/bin/bash
file=example.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
echo Datei existiert: $file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=example.txt: Diese Zeile definiert die Variablendatei und weist ihr den Wert example.txt zu. Sie können dies durch den Namen der Datei ersetzen, nach der Sie suchen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Die Bedingung [ -e $file ] prüft, ob die durch den Wert der Dateivariablen angegebene Datei existiert. Das Flag -e wird verwendet, um zu prüfen, ob eine Datei vorhanden ist.
  4. echo Datei existiert: $datei: Wenn die Bedingung wahr ist (d. h. die Datei existiert), gibt diese Zeile eine Meldung aus, die angibt, dass die Datei existiert, zusammen mit dem Namen der Datei.
  5. else: Wenn die Bedingung falsch ist (d. h. die Datei existiert nicht), führt das Skript den Code unter dem else-Zweig aus.
  6. echo Datei nicht gefunden: $datei: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde, zusammen mit dem Namen der Datei.
  7. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei wird gefunden

Datei wird gefunden

9) Was ist der Unterschied zwischen einfachen Anführungszeichen (‘) und doppelten Anführungszeichen () beim Shell-Scripting?

Einfache Anführungszeichen (‘) und doppelte Anführungszeichen () werden zum Einschließen von Zeichenfolgen in Shell-Skripten verwendet, haben jedoch unterschiedliche Verhaltensweisen:

  • Einfache Anführungszeichen: Alles zwischen einfachen Anführungszeichen wird als Literalzeichenfolge behandelt. Variablennamen und die meisten Sonderzeichen werden nicht erweitert.
  • Doppelte Anführungszeichen: Variablen und bestimmte Sonderzeichen in doppelten Anführungszeichen werden erweitert. Der Inhalt unterliegt der Variablenersetzung und der Befehlsersetzung.

#!/bin/bash

abcd=Hallo
echo ‚$abcd‘ # Ausgabe: $abcd
echo $abcd # Ausgabe: Hallo

10) Wie können Sie Befehlszeilenargumente in einem Shell-Skript verwenden?

Kommandozeilenargumente sind Werte, die einem Skript bei seiner Ausführung bereitgestellt werden. Auf sie kann innerhalb des Skripts über spezielle Variablen wie , usw. zugegriffen werden, wobei das erste Argument, das zweite Argument usw. darstellt.

Zum Beispiel: Wenn unser Skriptname in „example.sh“ steht

#!/bin/bash

echo Skriptname:

Bei allen Linux-Distributionen ist das Shell-Skript wie ein Zauberstab, der den Prozess automatisiert, Benutzern Zeit spart und die Produktivität steigert. Dieses Tutorial zur SOLL-Skripterstellung stellt Ihnen mehr als 25 SOLL-Skripting-Beispiele vor.

Aber bevor wir zum Thema übergehen Shell-Scripting Beispiele: Lassen Sie uns Shell-Skripte und die tatsächlichen Anwendungsfälle von Shell-Skripten verstehen.

Was ist Shell-Skript?

Nun, die Schale ist eine CLI ( Befehlszeileninterpreter ), das in einem Textfenster ausgeführt wird, in dem Benutzer Shell-Befehle verwalten und ausführen können. Andererseits wird der Prozess des Schreibens einer Reihe von Befehlen, die auf einem Linux-System ausgeführt werden sollen. Eine Datei, die solche Anweisungen enthält, wird als Bash-Skript bezeichnet.

Verwendung von Shell-Skripten

Im Folgenden sind einige häufige Verwendungszwecke von Shell Script aufgeführt:

  • Aufgabenautomatisierung – Es kann verwendet werden, um sich wiederholende Aufgaben wie regelmäßige Backups und Softwareinstallationsaufgaben zu automatisieren.
  • Anpassung - Man kann Shell-Skripte verwenden, um seine Befehlszeilenumgebung zu entwerfen und seine Aufgabe je nach Bedarf einfach auszuführen.
  • Dokumentenverwaltung - Die Shell-Skripte können auch zum Verwalten und Bearbeiten von Dateien und Verzeichnissen verwendet werden, beispielsweise zum Verschieben, Kopieren, Umbenennen oder Löschen von Dateien.

Beispiele für Shell-Skripte unter Linux

1) Was bedeutet das Shebang (#!) am Anfang eines Shell-Skripts?

Der Mist (#!) am Anfang eines Skripts gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll. Es teilt dem System mit, welche Shell oder welcher Interpreter die Befehle des Skripts interpretieren soll.

Zum Beispiel: Angenommen, wir haben ein Skript mit dem Namen myscript.sh geschrieben in der Bash-Shell:

Mist

Mist

In diesem Beispiel:

  • Das #!/bin/bash am Anfang des Skripts gibt an, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  • Die Echo-Befehle werden zum Drucken von Nachrichten an das Terminal verwendet.

2) Wie führt man ein Shell-Skript über die Befehlszeile aus?

Um ein Shell-Skript über die Befehlszeile auszuführen, müssen wir die folgenden Schritte ausführen:

  • Stellen Sie sicher, dass die Skriptdatei über ausführbare Berechtigungen verfügt chmod-Befehl :
chmod +x myscript.sh>
  • Führen Sie das Skript unter Verwendung seines Dateinamens aus:
./myscript.sh>

Hier muss ersetzt werden myscrtipt.sh mit Ihrem Skriptnamen.

3) Schreiben Sie ein Shell-Skript, das techcodeview.com auf dem Terminal ausgibt.

Erstellen Sie einen Skriptnamen „myscript.sh“ (wir verwenden „ Weil ` Editor, Sie können einen beliebigen Editor auswählen)

vim myscript.sh>

#!/bin/bash
# Dieses Skript druckt techcodeview.com auf dem Terminal
echo techcodeview.com

Namen drucken

Namen drucken

Wir machen unser Skript mit „chmod +x“ ausführbar, führen es dann mit „./myscipt.sh“ aus und erhalten die gewünschte Ausgabe techcodeview.com.

4) Erklären Sie den Zweck des Echo-Befehls beim Shell-Scripting.

Der Echo-Befehl dient der Anzeige von Texten oder Variablen auf dem Terminal. Es wird häufig zum Drucken von Nachrichten, Variablenwerten und zum Generieren von Programmausgaben verwendet.

434

Echo-Befehl

In diesem Beispiel haben wir „echo“ direkt auf dem Terminal ausgeführt, da es innerhalb des Shell-Skripts genauso funktioniert.

5) Wie kann man einer Variablen in einem Shell-Skript einen Wert zuweisen?

Variablen werden Werte mit dem Zuweisungsoperator = zugewiesen.

Zum Beispiel:

#!/bin/bash
# Einer Variablen einen Wert zuweisen
Name=Jayesh
Alter=21
echo $name $age

Erläuterung:

  • Der Namensvariablen wird der Wert Jayesh zugewiesen.
  • Der Altersvariable wird der Wert 21 zugewiesen.
  • echo wird zum Drucken verwendet und `$name` `$age` wird verwendet, um den in den Variablen gespeicherten Wert aufzurufen.

435

6) Schreiben Sie ein Shell-Skript, das den Namen eines Benutzers als Eingabe verwendet und ihn begrüßt.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash
# Fragen Sie den Benutzer nach seinem Namen
echo Wie heißt du?
Namen lesen
# Begrüßen Sie den Benutzer
echo Hallo, $name! Freut mich, Sie kennenzulernen.

Erläuterung:

  • #!/bin/bash: Das ist die Shebang-Zeile. Es weist das System an, den Bash-Interpreter zum Ausführen des Skripts zu verwenden.
  • # Fragen Sie den Benutzer nach seinem Namen: Dies ist ein Kommentar. Es bietet Kontext zum kommenden Code. Kommentare werden vom Interpreter ignoriert.
  • echo Wie heißt du?: Der echo-Befehl wird verwendet, um den Text in doppelten Anführungszeichen auf dem Terminal anzuzeigen.
  • Lesename: Der Lesebefehl wartet auf die Eingabe von Text durch den Benutzer und speichert ihn im Variablennamen.
  • echo Hallo, $name! Freut mich, Sie kennenzulernen.: Diese Zeile verwendet den echo-Befehl, um eine Begrüßungsnachricht zu drucken, die den Wert der Namensvariablen enthält, der aus der Benutzereingabe erfasst wurde.

436

7) Wie fügt man einem Shell-Skript Kommentare hinzu?

Kommentare im Shell-Scripting werden verwendet, um Erklärungen oder Kontext zum Code bereitzustellen. Sie werden vom Interpreter ignoriert und sind nur für Menschen gedacht, die das Skript lesen. Mit dem #-Symbol können Sie Kommentare hinzufügen.

#!/bin/bash
# Dies ist ein Kommentar, der den Zweck des Skripts erläutert
echo gfg

8) Erstellen Sie ein Shell-Skript, das prüft, ob eine Datei im aktuellen Verzeichnis vorhanden ist.

Hier ist ein Skript, das prüft, ob eine Datei namens example.txt im aktuellen Verzeichnis vorhanden ist:

#!/bin/bash
file=example.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
echo Datei existiert: $file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=example.txt: Diese Zeile definiert die Variablendatei und weist ihr den Wert example.txt zu. Sie können dies durch den Namen der Datei ersetzen, nach der Sie suchen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Die Bedingung [ -e $file ] prüft, ob die durch den Wert der Dateivariablen angegebene Datei existiert. Das Flag -e wird verwendet, um zu prüfen, ob eine Datei vorhanden ist.
  4. echo Datei existiert: $datei: Wenn die Bedingung wahr ist (d. h. die Datei existiert), gibt diese Zeile eine Meldung aus, die angibt, dass die Datei existiert, zusammen mit dem Namen der Datei.
  5. else: Wenn die Bedingung falsch ist (d. h. die Datei existiert nicht), führt das Skript den Code unter dem else-Zweig aus.
  6. echo Datei nicht gefunden: $datei: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde, zusammen mit dem Namen der Datei.
  7. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei wird gefunden

Datei wird gefunden

9) Was ist der Unterschied zwischen einfachen Anführungszeichen (‘) und doppelten Anführungszeichen () beim Shell-Scripting?

Einfache Anführungszeichen (‘) und doppelte Anführungszeichen () werden zum Einschließen von Zeichenfolgen in Shell-Skripten verwendet, haben jedoch unterschiedliche Verhaltensweisen:

  • Einfache Anführungszeichen: Alles zwischen einfachen Anführungszeichen wird als Literalzeichenfolge behandelt. Variablennamen und die meisten Sonderzeichen werden nicht erweitert.
  • Doppelte Anführungszeichen: Variablen und bestimmte Sonderzeichen in doppelten Anführungszeichen werden erweitert. Der Inhalt unterliegt der Variablenersetzung und der Befehlsersetzung.

#!/bin/bash

abcd=Hallo
echo ‚$abcd‘ # Ausgabe: $abcd
echo $abcd # Ausgabe: Hallo

10) Wie können Sie Befehlszeilenargumente in einem Shell-Skript verwenden?

Kommandozeilenargumente sind Werte, die einem Skript bei seiner Ausführung bereitgestellt werden. Auf sie kann innerhalb des Skripts über spezielle Variablen wie $1, $2 usw. zugegriffen werden, wobei $1 das erste Argument, $2 das zweite Argument usw. darstellt.

Zum Beispiel: Wenn unser Skriptname in „example.sh“ steht

#!/bin/bash

echo Skriptname: $0
echo Erstes Argument: $1
echo Zweites Argument: $2

Wenn wir das Skript mit „.example.sh hello_1 hello_2“ ausführen, wird Folgendes ausgegeben:

CLI-Argumente

CLI-Argumente

11) Wie verwenden Sie die for-Schleife, um eine Liste von Werten zu durchlaufen?

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

Früchte = (Apfel, Banane, Kirsche, Dattel)
für Obst in ${fruits[@]}; Tun
echo Aktuelle Frucht: $fruit
Erledigt

Erläuterung:

Die Zeile „fruits=“ erstellt ein Array mit dem Namen „Früchte“ mit vier Elementen: Apfel, Banane, Kirsche und Dattel.

  • für Obst in ${fruits[@]}; do: Diese Zeile startet eine for-Schleife. Hier ist, was jeder Teil bedeutet:
  • für Obst: Dies deklariert eine Schleifenvariable namens Obst. In jeder Iteration der Schleife speichert Fruit den Wert des aktuellen Elements aus dem Fruit-Array.
  • ${fruits[@]}: Dies ist eine Array-Erweiterung, die alle Elemente aus dem Fruit-Array übernimmt. Die ${…}-Syntax stellt sicher, dass jedes Element als separates Element behandelt wird.
  • do: Dieses Schlüsselwort markiert den Anfang des Schleifenkörpers.
  • echo Aktuelle Frucht: $fruit: Innerhalb der Schleife verwendet diese Zeile den Echo-Befehl, um den aktuellen Wert der Schleifenvariablen Frucht anzuzeigen. Für jede Frucht im Array wird eine Meldung wie Aktuelle Frucht: Apfel ausgegeben.
  • done: Dieses Schlüsselwort markiert das Ende des Schleifenkörpers. Es teilt dem Skript mit, dass die Schleife beendet ist.
for-Schleife

for-Schleife

12) Schreiben Sie ein Shell-Skript, das mithilfe einer Schleife die Summe der ganzen Zahlen von 1 bis N berechnet.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

echo Geben Sie eine Zahl (N) ein:
lies N
Summe=0
for (( i=1; i<=$N; i++ )); Tun
sum=$((sum + i))
Erledigt
echo Die Summe der ganzen Zahlen von 1 bis $N ist: $sum

Erläuterung:
Das Skript fordert Sie zunächst dazu auf, mithilfe von „read“ eine Zahl (N) einzugeben. Diese Zahl bestimmt, wie oft die Schleife ausgeführt wird.

  1. Die Variablensumme wird auf 0 initialisiert. Diese Variable verfolgt die Summe der Ganzzahlen.
  2. Die for-Schleife beginnt mit for (( i=1; i<=$N; i++ )). Diese Schleifenstruktur wird verwendet, um eine Reihe von Aktionen eine bestimmte Anzahl von Malen zu wiederholen, in diesem Fall von 1 bis zum Wert N.
  3. Innerhalb der Schleife passieren folgende Dinge:
    • i=1 setzt die Schleifenvariable i zu Beginn jeder Iteration auf 1.
    • Die Schleifenbedingung i<=$N prüft, ob i immer noch kleiner oder gleich der angegebenen Zahl N ist.
    • Wenn die Bedingung wahr ist, wird der Schleifenkörper ausgeführt.
    • sum=$((sum + i)) berechnet den neuen Wert von sum, indem der aktuelle Wert von i dazu addiert wird. Dadurch werden die ganzen Zahlen von 1 bis zum aktuellen i-Wert addiert.
  4. Nach jeder Iteration erhöht i++ den Wert von i um 1.
  5. Die Schleife läuft weiter, bis die Bedingung i<=$N falsch wird (wenn i größer als N wird).
  6. Sobald die Schleife beendet ist, zeigt das Skript die Summe der ganzen Zahlen von 1 bis zur eingegebenen Zahl N an.

439

13) Erstellen Sie ein Skript, das nach einem bestimmten Wort in einer Datei sucht und dessen Vorkommen zählt.

Erstellen Sie einen Skriptnamen „word_count.sh“.

#!/bin/bash

echo Geben Sie das Wort ein, nach dem gesucht werden soll:
Zielwort lesen
echo Geben Sie den Dateinamen ein:
Dateinamen lesen
count=$(grep -o -w $target_word $filename | wc -l)
echo Das Wort „$target_word“ kommt $count mal in „$filename“ vor.

Erläuterung:

  • echo Geben Sie das zu suchende Wort ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, ein Wort einzugeben, nach dem er in einer Datei suchen möchte.
  • read target_word: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens target_word.
  • echo Geben Sie den Dateinamen ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, den Namen der Datei einzugeben, in der er suchen möchte.
  • Dateinamen lesen: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens Dateiname.
  • count=$(grep -o -w $target_word $filename | wc -l): Diese Zeile erledigt die Hauptarbeit des Skripts. Lassen Sie es uns weiter aufschlüsseln:
    • grep -o -w $target_word $filename: Dieser Teil des Befehls sucht nach Vorkommen des target_word im angegebenen Dateinamen. Die Optionen -o und -w stellen sicher, dass nur Ganzwortübereinstimmungen gezählt werden.
    • |: Dies ist eine Pipe, die die Ausgabe des vorherigen Befehls übernimmt und als Eingabe an den nächsten Befehl sendet.
    • wc -l: Dieser Teil des Befehls verwendet den Befehl wc, um die Anzahl der Zeilen in der Eingabe zu zählen. Die Option -l zählt gezielt die Zeilen.
    • Der gesamte Befehl berechnet die Anzahl der Vorkommen des Zielworts in der Datei und weist diese Anzahl der Variablen coun zu

441

14) Erklären Sie die Unterschiede zwischen Standardausgabe (stdout) und Standardfehler (stderr).

Der Hauptunterschied zwischen Standardausgabe (stdout) und Standardfehler (stderr) ist wie folgt:

  • Standardausgabe (stdout): Dies ist der Standardausgabestream, in den die reguläre Ausgabe eines Befehls geht. Es wird standardmäßig auf dem Terminal angezeigt. Sie können es mit> in eine Datei umleiten.
  • Standardfehler (stderr): Dies ist der Ausgabestream für Fehlermeldungen und Warnungen. Es wird standardmäßig auch auf dem Terminal angezeigt. Sie können es mit 2> in eine Datei umleiten.

15) Erklären Sie das Konzept bedingter Anweisungen im Shell-Scripting.

Bedingte Anweisungen im Shell-Scripting ermöglichen es uns, Entscheidungen zu treffen und den Ablauf unseres Skripts auf der Grundlage bestimmter Bedingungen zu steuern. Sie ermöglichen unserem Skript, unterschiedliche Befehlssätze auszuführen, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist. Die primären bedingten Anweisungen beim Shell-Scripting sind die if-Anweisung, die elif-Anweisung (optional) und die else-Anweisung (optional).

Hier ist die Grundstruktur einer bedingten Anweisung im Shell-Scripting:

if [ Bedingung ]; Dann
# Befehle, die ausgeführt werden sollen, wenn die Bedingung wahr ist
elif [ another_condition ]; Dann
# Befehle, die ausgeführt werden sollen, wenn another_condition wahr ist (optional)
anders
# Befehle, die ausgeführt werden sollen, wenn keine der Bedingungen wahr ist (optional)
Sei

Erläuterung:

  • [ Bedingung ] = Befehl, der die Bedingung auswertet und einen Exit-Status „wahr“ (0) oder „falsch“ (ungleich Null) zurückgibt.
  • then = Es handelt sich um ein Schlüsselwort, das angibt, dass die darauf folgenden Befehle ausgeführt werden, wenn die Bedingung „true“ ergibt.
  • elif = (Abkürzung für else if) Dies ist ein Abschnitt, der es uns ermöglicht, zusätzliche zu überprüfende Bedingungen anzugeben.
  • else = es ist ein Abschnitt, der Befehle enthält, die ausgeführt werden, wenn keine der Bedingungen wahr ist.
  • fi = Es ist ein Schlüsselwort, das das Ende des bedingten Blocks markiert.

16) Wie liest man Zeilen aus einer Datei in einem Shell-Skript?

Zu Zeilen lesen Aus einer Datei innerhalb eines Shell-Skripts können wir verschiedene Methoden verwenden, aber ein gängiger Ansatz ist die Verwendung einer While-Schleife in Kombination mit dem Lesebefehl. So können wir es machen:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
while IFS= read -r line; Tun
echo Zeile gelesen: $line
# Fügen Sie hier Ihre Verarbeitungslogik hinzu
erledigt <$file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=/home/jayeshkumar/jayesh.txt: Diese Zeile definiert die Variablendatei und weist den vollständigen Pfad zur Datei jayesh.txt im Verzeichnis /home/jayeshkumar zu. Ändern Sie diesen Pfad so, dass er mit dem tatsächlichen Pfad der Datei übereinstimmt, die Sie lesen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Es prüft, ob die durch die Variable $file angegebene Datei existiert. Das Flag -e prüft, ob eine Datei vorhanden ist.
  4. while IFS= read -r line; do: Diese Zeile initiiert eine While-Schleife, die Zeilen aus der Datei liest.
    • IFS=: Das IFS (Internal Field Separator) wird auf einen leeren Wert gesetzt, um führende und nachfolgende Leerzeichen beizubehalten.
    • read -r line: Dies liest die aktuelle Zeile aus der Datei und speichert sie in der Variablen line.
  5. echo Zeile gelesen: $line: Diese Zeile gibt den Inhalt der Zeile aus, die aus der Datei gelesen wurde. Die Variable $line enthält den Inhalt der aktuellen Zeile.
  6. # Fügen Sie hier Ihre Verarbeitungslogik hinzu: Dies ist ein Platzhalterkommentar, in dem Sie Ihre eigene Logik zur Verarbeitung jeder Zeile hinzufügen können. Beispielsweise können Sie die Zeile analysieren, Informationen extrahieren oder bestimmte Aktionen basierend auf dem Inhalt ausführen.
  7. done <$file: Dies markiert das Ende der while-Schleife. Das < $file leitet den Inhalt der Datei um, damit er von der Schleife gelesen werden kann.
  8. else: Wenn die Datei nicht existiert (die Bedingung in der if-Anweisung ist falsch), führt das Skript den Code unter dem else-Zweig aus.
  9. echo Datei nicht gefunden: $file: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde.
  10. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei lesen

Datei lesen

Hier haben wir „“ verwendet pwd ` Befehl, um den Pfad des aktuellen Verzeichnisses abzurufen.

17) Schreiben Sie eine Funktion in ein Shell-Skript, die die Fakultät einer bestimmten Zahl berechnet.

Hier ist das Skript, dasBerechnen Sie die Fakultäteiner gegebenen Zahl.

#!/bin/bash
# Definieren Sie eine Funktion zur Berechnung der Fakultät
berechne_faktorial() {
num=$1
Tatsache=1
for ((i=1; i<=num; i++)); Tun
fact=$((fact * i))
Erledigt
echo $fact
}
# Fordern Sie den Benutzer auf, eine Nummer einzugeben
echo Geben Sie eine Zahl ein:
lese input_num
# Rufen Sie die Funktion „calcure_factorial“ mit der Eingabenummer auf
factial_result=$(calculate_factorial $input_num)
# Zeigen Sie das faktorielle Ergebnis an
echo Factorial von $input_num ist: $factorial_result

Erläuterung:

  1. Das Skript beginnt mit der Shebang-Zeile #!/bin/bash, um den Interpreter anzugeben.
  2. berechne_faktorial() ist als Funktion definiert. Es benötigt ein Argument, num, das die Zahl ist, für die die Fakultät berechnet werden muss.
  3. Innerhalb der Funktion wird fact auf 1 initialisiert. Diese Variable speichert das Fakultätsergebnis.
  4. Die for-Schleife iteriert von 1 bis zur angegebenen Zahl (num). In jeder Iteration multipliziert es den aktuellen Wert von fact mit dem Schleifenindex i.
  5. Nach Abschluss der Schleife enthält die Faktenvariable die berechnete Fakultät.
  6. Das Skript fordert den Benutzer mit „read“ zur Eingabe einer Zahl auf.
  7. Die Funktion „calcure_factorial“ wird mit der vom Benutzer angegebenen Zahl aufgerufen und das Ergebnis wird in der Variablen „factorial_result“ gespeichert.
  8. Abschließend zeigt das Skript das berechnete Fakultätsergebnis an.
Fakultät

Fakultät

18) Wie gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um?

In einem Shell-Skript können Sie Signale wie Strg+C (auch bekannt als SIGINT) mit dem Trap-Befehl verarbeiten. Strg+C generiert ein SIGINT-Signal, wenn der Benutzer es drückt, um das laufende Skript oder Programm zu unterbrechen. Mithilfe des Trap-Befehls können Sie Aktionen festlegen, die ausgeführt werden sollen, wenn ein bestimmtes Signal empfangen wird. So gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um:

#!/bin/bash
Aufräumen() {
echo Skript unterbrochen. Bereinigung wird durchgeführt…
# Fügen Sie hier Ihre Bereinigungsaktionen hinzu
Ausgang 1
}
# Richten Sie eine Falle ein, um die Bereinigungsfunktion aufzurufen, wenn Strg+C (SIGINT) empfangen wird
Fallenbereinigung SIGINT
# Rest Ihres Skripts
echo Laufen…
Schlaf 10
echo Fertig.

Der Umgang mit Signalen ist wichtig, um Skripte robust zu machen und sicherzustellen, dass sie unerwartete Unterbrechungen ordnungsgemäß verarbeiten. Sie können die Bereinigungsfunktion an Ihre spezifischen Anforderungen anpassen, z. B. Dateien schließen, Prozesse stoppen oder Informationen protokollieren, bevor das Skript beendet wird.

Erläuterung:

  1. #!/bin/bash: Diese Shebang-Zeile gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll.
  2. cleanup() { … }: Dies definiert eine Funktion namens cleanup. In diese Funktion können Sie alle Aktionen einschließen, die ausgeführt werden müssen, wenn das Skript unterbrochen wird, z. B. das Schließen von Dateien, das Freigeben von Ressourcen oder das Durchführen anderer Bereinigungsaufgaben.
  3. trap cleanup SIGINT: Der trap-Befehl wird zum Einrichten eines Signalhandlers verwendet. In diesem Fall wird angegeben, dass die Bereinigungsfunktion ausgeführt werden soll, wenn das SIGINT-Signal (Strg+C) empfangen wird.
  4. echo Running…, sleep 10, echo Finished.: Dies sind nur Beispielbefehle, um die Ausführung eines Skripts zu simulieren.

446

19) Erstellen Sie ein Skript, das nach doppelten Zeilen in einer Textdatei sucht und diese entfernt.

Hier ist unser Linux-Skript, in dem wir doppelte Zeilen aus einer Textdatei entfernen.

#!/bin/bash
input_file=input.txt
Ausgabedatei=Ausgabe.txt
$input_file | sortieren uniq> $output_file
echo Doppelte Zeilen erfolgreich entfernt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Variable input_file wird auf den Namen der Eingabedatei gesetzt, die doppelte Zeilen enthält (ändern Sie diesen in Ihren tatsächlichen Namen der Eingabedatei).
  3. Die Variable „output_file“ wird auf den Namen der Ausgabedatei gesetzt, aus der die Duplikate entfernt werden (ändern Sie diesen in den gewünschten Namen der Ausgabedatei).
  4. Das Skript verwendet den Sortierbefehl, um die Zeilen in der Eingabedatei zu sortieren. Durch das Sortieren der Zeilen wird sichergestellt, dass doppelte Zeilen gruppiert werden.
  5. Die sortierten Zeilen werden dann durch den Befehl uniq geleitet, der aufeinanderfolgende doppelte Zeilen entfernt. Die Ausgabe dieses Prozesses wird in die Ausgabedatei umgeleitet.
  6. Nachdem die Duplikate entfernt wurden, gibt das Skript eine Erfolgsmeldung aus.
Entfernen doppelter Zeilen

Entfernen doppelter Zeilen

Hier verwenden wir „ Katze ` um den Text in der Textdatei anzuzeigen.

20) Schreiben Sie ein Skript, das ein sicheres Zufallspasswort generiert.

Hier ist unser Skript zum Generieren eines sicheren Zufallspassworts.

#!/bin/bash
# Funktion zum Generieren eines zufälligen Passworts
generiere Passwort() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Rufen Sie die Funktion auf und speichern Sie das generierte Passwort
passwort=$(generate_password)
echo Generiertes Passwort: $password

Hinweis: Der Benutzer kann die Länge seines Passworts entsprechend ändern, indem er die Zahl „12“ ersetzt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass es mit der Bash-Shell interpretiert werden soll.
  2. Die Funktion „generate_password“ ist so definiert, dass sie ein zufälliges Passwort generiert. So funktioniert das:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • falten -w 12 unterteilt die gefilterten Zufallsdaten in Zeilen mit einer Breite von jeweils 12 Zeichen.
    • head -n 1 wählt die erste Zeile aus und gibt uns effektiv eine zufällige Folge von Zeichen der Länge 12.
  3. Der Variable „password“ wird das Ergebnis des Aufrufs der Funktion „generate_password“ zugewiesen.
  4. Abschließend wird das generierte Passwort mittels Echo angezeigt.

448

21) Schreiben Sie ein Shell-Skript, das die Gesamtgröße aller Dateien in einem Verzeichnis berechnet.

Hier ist ein Shell-Skript zur Berechnung der Gesamtgröße aller Dateien in einem Verzeichnis.

#!/bin/bash
Verzeichnis=/Pfad/zu/Ihrem/Verzeichnis
total_size=$(du -csh $directory | grep total | awk ‚{print $1}‘)
echo Gesamtgröße der Dateien in $directory: $total_size

Erläuterung:

  1. Das Skript beginnt mit dem Befehl #!/bin/bash, der darauf hinweist, dass es mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Verzeichnisvariable wird auf den Pfad des Verzeichnisses gesetzt, für das Sie die Gesamtdateigröße berechnen möchten. Ersetzen Sie /path/to/your/directory durch den tatsächlichen Pfad.
  3. Der Befehl du wird verwendet, um die Dateispeichernutzung abzuschätzen. Die verwendeten Optionen sind:
    • -c: Erzeuge eine Gesamtsumme.
    • -s: Zeigt nur die Gesamtgröße des angegebenen Verzeichnisses an.
    • -h: Druckgrößen in einem für Menschen lesbaren Format (z. B. KB, MB, GB).
  4. Die Ausgabe von du wird an grep total weitergeleitet, um die Zeile herauszufiltern, die die Gesamtgröße enthält.
  5. awk „{print $1}“ wird verwendet, um das erste Feld (Gesamtgröße) aus der Zeile zu extrahieren.
  6. Die berechnete Gesamtgröße wird in der Variablen total_size gespeichert.
  7. Abschließend zeigt das Skript mithilfe von Echo die Gesamtgröße an.
Gesamtgröße der Dateien

Gesamtgröße der Dateien

Hier haben wir „“ verwendet pwd ` Befehl, um den aktuellen Verzeichnispfad anzuzeigen.

22) Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting.

Besonderheit `if`Staiftement `elif`-Erklärung
Zweck Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting. Stellt alternative Bedingungen bereit, um zu überprüfen, ob die anfängliche If-Bedingung falsch ist.
Verwendung Wird für den Anfangszustand verwendet. Wird nach der anfänglichen if-Bedingung verwendet, um zusätzliche Bedingungen zu überprüfen.
Anzahl der Blöcke Kann nur einen if-Block haben. Kann mehrere elif-Blöcke haben, aber nur einen else-Block (optional).
Ausführung Führt den mit der if-Anweisung verknüpften Codeblock aus, wenn die Bedingung wahr ist. Wenn die Bedingung falsch ist, wird der else-Block (falls vorhanden) ausgeführt (optional). Überprüft jede Elif-Bedingung der Reihe nach. Wenn eine elif-Bedingung wahr ist, wird der entsprechende Codeblock ausgeführt und das Skript verlässt den gesamten bedingten Block. Wenn keine der elif-Bedingungen wahr ist, wird der else-Block (falls vorhanden) ausgeführt.
Verschachtelte Strukturen Kann in anderen if-, elif- oder else-Blöcken verschachtelt werden. Kann nicht in einem anderen elif-Block verschachtelt werden, kann aber in einem if- oder else-Block verwendet werden.

Lassen Sie es uns anhand eines Beispiels verstehen.

#!/bin/bash
Zahl=5
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
anders
echo $number ist nicht größer als 10
Sei
Echo ——–
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
elif [ $number -eq 10 ]; Dann
echo $number ist gleich 10
anders
echo $number ist kleiner als 10
Sei

Erläuterung:

In diesem Beispiel prüft der erste if-Block, ob die Zahl größer als 10 ist. Wenn nicht, gibt er eine Meldung aus, die angibt, dass die Zahl nicht größer als 10 ist. Der zweite Block mit elif-Anweisungen prüft nacheinander mehrere Bedingungen, bis eine davon wahr ist. Da in diesem Fall der Wert von number 5 ist, lautet die Ausgabe:

if_elif Unterschied

if_elif Unterschied

23) Wie nutzt man eine While-Schleife, um Befehle wiederholt auszuführen?

Bei der Shell-Skripterstellung wird eine While-Schleife verwendet, um eine Reihe von Befehlen wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist. Die Schleife führt die Befehle so lange aus, bis die Bedingung falsch wird.

Hier ist die grundlegende Syntax einer While-Schleife:

while [ Bedingung ]; Tun
# Auszuführende Befehle
Erledigt

Erläuterung:

  1. Die „while“-Schleife beginnt mit dem Schlüsselwort „while“, gefolgt von einer in eckigen Klammern eingeschlossenen Bedingung „[ ]“.
  2. Der Schleifenkörper, der die auszuführenden Befehle enthält, ist in die Schlüsselwörter „do“ und „done“ eingeschlossen.
  3. Die Schleife prüft zunächst die Bedingung. Wenn die Bedingung wahr ist, werden die Befehle im Schleifenkörper ausgeführt. Nachdem der Schleifenkörper ausgeführt wurde, wird die Bedingung erneut überprüft und der Vorgang wiederholt, bis die Bedingung falsch wird.

Beispiel: Wenn wir Zahlen von 1 bis 5 drucken möchten

#!/bin/bash
Zähler=1
while [ $counter -le 5 ]; Tun
Echo-Nummer: $counter
counter=$((counter + 1))
Erledigt

Erläuterung:

  • Die Zählervariable wird auf 1 gesetzt.
  • Die while-Schleife prüft, ob der Wert von counter kleiner oder gleich 5 ist. Solange diese Bedingung erfüllt ist, wird die Schleife weiter ausgeführt.
  • Innerhalb der Schleife wird der aktuelle Wert des Zählers mithilfe von Echo ausgegeben.
  • Der Zähler wird mit dem Ausdruck $((Zähler + 1)) um 1 erhöht.
while-Schleife

while-Schleife

24) Erstellen Sie ein Shell-Skript, das alle leeren Dateien in einem Verzeichnis findet und auflistet.

Shell-Skript, mit dem Sie mithilfe der Befehle „find“ und „stat“ alle leeren Dateien in einem Verzeichnis suchen und auflisten können:

#!/bin/bash
Verzeichnis=$1″
if [ -z $directory ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann
echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei
echo Leere Dateien im $directory:
finde $directory -type f -empty

Erläuterung:

  1. ` #!/bin/bash „: Dies wird als Shebang bezeichnet und weist das Betriebssystem an, die Bash-Shell zum Interpretieren und Ausführen des Skripts zu verwenden.
  2. ` Verzeichnis=$1″ `: Diese Zeile weist der Variablen ` das erste Befehlszeilenargument (bezeichnet mit $1) zu Verzeichnis `.
  3. ` if [ -z $directory ]; Dann `: Diese Zeile startet eine if-Anweisung, die prüft, ob das ` Verzeichnis ` Variable ist leer (-z testet auf eine leere Zeichenfolge).
  4. ` Echo-Nutzung: $0 `: Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung aus, wobei ` 0 $ ` steht für den Namen des Skripts.
  5. ` Ausgang 1 `: Diese Zeile beendet das Skript mit dem Exit-Code ` 1 `, was auf einen Fehler hinweist.
  6. ` Sei `: Diese Zeile markiert das Ende des ` Wenn ` Aussage.
  7. ` Wenn [ ! -d $Verzeichnis ]; Dann `: Dies startet eine weitere if-Anweisung, um zu prüfen, ob das angegebene Verzeichnis existiert (` -D ` testet für ein Verzeichnis).
  8. ` echo Fehler: „$directory“ ist kein gültiges Verzeichnis. `: Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. ` Ausgang 1 `: Beendet das Skript mit dem Exit-Code ` 1 `.
  10. ` Sei `: Markiert das Ende des zweiten ` wenn` Stellungnahme.
  11. ` echo Leere Dateien im $directory: `: Wenn bisher alles gültig ist, gibt diese Zeile eine Meldung aus, die angibt, dass das Skript leere Dateien im angegebenen Verzeichnis auflistet.
  12. ` finde $directory -type f -empty `: Diese Zeile verwendet das ` finden ` Befehl zum Suchen nach leeren Dateien (` -leer `) vom Typ reguläre Dateien (` -Typ f `) im angegebenen Verzeichnis. Anschließend werden diese leeren Dateien aufgelistet.
Leere Dateien finden

Leere Dateien finden

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/ verwendet

25) Was ist der Zweck des Lesebefehls beim Shell-Scripting?

Mit dem Lesebefehl beim Shell-Scripting fragt das Skript Sie nach Informationen. Es ist, als würde Ihnen ein Computer eine Frage stellen und auf Ihre Antwort warten. Dies ist nützlich für Skripte, bei denen Sie etwas eingeben müssen oder wenn das Skript mit Informationen aus Dateien arbeiten muss. Der Lesebefehl hilft dem Skript, anzuhalten und auf Ihre Eingabe zu warten. Anschließend kann es diese Informationen verwenden, um weitere Aufgaben im Skript auszuführen.

Syntax des Lesebefehls:

read variable_name>

Beispiel : Wenn wir den Namen als Eingabe vom Benutzer verwenden möchten, um ihn zu drucken.

#!/bin/bash
echo Bitte geben Sie Ihren Namen ein:
Namen lesen
echo Hallo, $name!

453

lies nam

Zusammenfassend lässt sich sagen, dass der Lesebefehl verwendet wird, um Benutzereingaben oder Daten aus Dateien in Shell-Skripten zu erfassen, wodurch die Skripte interaktiver und vielseitiger werden.

26) Schreiben Sie ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

Hier ist ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

#!/bin/bash
Verzeichnis=$1″
if [ -z $directory ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann

echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei

cd $verzeichnis || Ausgang 1

für Datei in *; Tun
if [ -f $file ]; Dann
newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘)
[ $file != $newname ] && mv $file $newname
Sei
Erledigt

Erläuterung:

  1. #!/bin/bash : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Verzeichnis=$1″ : Diese Zeile weist das erste Befehlszeilenargument dem Variablenverzeichnis zu.
  3. if [ -z $directory ]; Dann : Diese Zeile prüft, ob die Verzeichnisvariable leer ist (kein Argument angegeben, wenn das Skript ausgeführt wird).
  4. Echo-Nutzung: $0 : Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung mit dem Namen des Skripts ($0) aus.
  5. Ausgang 1 : Diese Zeile beendet das Skript mit dem Exit-Code 1, was darauf hinweist, dass ein Fehler aufgetreten ist.
  6. F i: Dies markiert das Ende der ersten if-Anweisung.
  7. Wenn [ ! -d $Verzeichnis ]; Dann : Diese Zeile prüft, ob das angegebene Verzeichnis nicht existiert (-d testet ein Verzeichnis).
  8. echo Fehler: „$directory“ ist kein gültiges Verzeichnis. : Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. Ausgang 1 : Beendet das Skript mit dem Exit-Code 1.
  10. Sei : Markiert das Ende der zweiten if-Anweisung.
  11. cd $verzeichnis || Ausgang 1 : Ändert das aktuelle Arbeitsverzeichnis in das angegebene Verzeichnis. Wenn der Verzeichniswechsel fehlschlägt (z. B. Verzeichnis nicht vorhanden), wird das Skript mit einem Fehlercode beendet.
  12. für Datei in *; Tun: ICH für Datei in *; Tun: löst eine Schleife aus, die alle Elemente im aktuellen Verzeichnis durchläuft (* entspricht allen Dateinamen).
  13. if [ -f $file ]; Dann : Überprüft, ob das aktuelle Schleifeniterationselement eine reguläre Datei ist (-f testet auf eine reguläre Datei).
  14. newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘) : Wandelt den aktuellen Dateinamen ($file) mit dem Befehl tr in Kleinbuchstaben um und speichert das Ergebnis in der Variablen newname.
  15. [ $file != $newname ] && mv $file $newname : Vergleicht den ursprünglichen Dateinamen mit dem neuen Dateinamen in Kleinbuchstaben. Wenn sie unterschiedlich sind, wird die Datei mit dem Befehl mv umbenannt.
  16. Sei : Markiert das Ende der inneren if-Anweisung.
  17. Erledigt : Markiert das Ende der Schleife.

454

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/test verwendet

27) Wie können Sie arithmetische Operationen innerhalb eines Shell-Skripts verwenden?

Arithmetische Operationen können innerhalb eines Shell-Skripts mithilfe verschiedener integrierter Methoden ausgeführt werden. Die Shell bietet Mechanismen für einfache arithmetische Berechnungen mithilfe der arithmetischen Erweiterung wie:

  1. Arithmetische Erweiterung ($((…)))
  2. Verwenden des expr-Befehls
  3. Verwenden des let-Befehls

Hier ist unser Shell-Skript, das alle drei Methoden für arithmetische Operationen erklärt.

#!/bin/bash
num1=10
num2=5

#Arithmetische Erweiterung ($((…)))

Ergebnis=$((num1 + num2))
echo Summe: $result

#Verwenden des expr-Befehls

sum=$(expr $num1 + $num2)
echo Summe: $sum

#Verwenden des let-Befehls

sei sum = num1 + num2
echo Summe: $sum

Erläuterung:

  1. `#!/bin/bash` : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. `num1=10` und ` num2=5` : Diese Zeilen weisen den Variablen ` die Werte 10 und 5 zu num1 ` und ` num2 ` bzw.
  3. `#Arithmetische Erweiterung ($((…)))` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die arithmetische Erweiterung demonstriert.
  4. `result=$((num1 + num2))` : Diese Zeile verwendet eine arithmetische Erweiterung, um die Summe von ` zu berechnen num1 ` und ` num2 ` und speichert das Ergebnis im ` Ergebnis ` variabel.
  5. „echo Summe: $result“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Ergebnis ` variabel.
  6. `#Verwenden des expr-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert Ausdruck ` Befehl für arithmetische Operationen.
  7. `sum=$(expr $num1 + $num2)` : Diese Zeile verwendet das ` Ausdruck ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und speichert das Ergebnis im ` Summe ` variabel. Beachten Sie, dass das ` Ausdruck Der Befehl ` erfordert Leerzeichen um die Operatoren.
  8. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
  9. `#Verwenden des let-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert lassen ` Befehl für arithmetische Operationen.
  10. `Lass Summe = num1 + num2″` : Diese Zeile verwendet das ` lassen ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und weist das Ergebnis dem ` zu Summe ` variabel. Das ` lassen Für den Befehl ` sind keine Leerzeichen um die Operatoren erforderlich.
  11. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
Arithmetik

Arithmetik

28) Erstellen Sie ein Skript, das prüft, ob ein Netzwerkhost erreichbar ist.

Hier ist ein einfaches Shell-Skript, das mithilfe des Ping-Befehls prüft, ob ein Netzwerkhost erreichbar ist:

#!/bin/bash
host=$1″
if [ -z $host ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei
ping -c 4 $host

wenn [ $? -eq 0 ]; Dann
echo $host ist erreichbar.
anders
echo $host ist nicht erreichbar.
Sei

Erläuterung:

  1. Es nimmt einen Hostnamen oder eine IP-Adresse als Argument und prüft, ob das Argument angegeben wird.
  2. Wenn kein Argument angegeben wird, wird eine Nutzungsmeldung angezeigt und der Vorgang beendet.
  3. Es verwendet den Ping-Befehl mit der Option -c 4, um vier ICMP-Echo-Anfragen an den angegebenen Host zu senden.
  4. Nachdem der Ping-Befehl ausgeführt wurde, prüft er den Exit-Status ($?). Wenn der Exit-Status 0 ist, bedeutet dies, dass der Host erreichbar ist und das Skript eine Erfolgsmeldung ausgibt. Andernfalls wird eine Fehlermeldung ausgegeben.

456

Notiz : Wir müssen beim Ausführen des Skripts einen Hostnamen als Argument angeben. Hier haben wir google.com verwendet

29) Schreiben Sie ein Shell-Skript, um das größte Element in einem Array zu finden:

Hier ist ein Shell-Skript, um das größte Element in einem Array zu finden.

#!/bin/bash
# Deklarieren Sie ein Array
array=(3 56 24 89 67)

# Initialisieren Sie eine Variable, um den Maximalwert zu speichern, beginnend mit dem ersten Element

max=${array[0]}

# Durch das Array iterieren

für num in ${array[@]}; Tun

# Vergleichen Sie jedes Element mit dem aktuellen Maximum

if ((num> max)); Dann
max=$num
Sei
Erledigt

# Drucken Sie den Maximalwert aus

echo Das maximale Element im Array ist: $max

Erläuterung:

  1. ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.
  2. ` array=(3 56 24 89 67) `: Das Array wird deklariert und mit Werten initialisiert.
  3. ` max=${array[0]} `: `max` wird mit dem ersten Element des Arrays initialisiert.
  4. ` für num in ${array[@]}; Tun „: Eine „for“-Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.
  5. ` if ((num> max)); Dann „: Eine „if“-Anweisung prüft, ob das aktuelle Element „num“ größer als das aktuelle Maximum „max“ ist.
  6. ` max=$num`: If`num ` ist größer als `max`, `max` wird mit dem Wert von num aktualisiert.
  7. ` Erledigt `: Die `for`-Schleife ist geschlossen.
  8. ` echo Das maximale Element im Array ist: $max `: Abschließend gibt das Skript den im Array gefundenen Maximalwert aus.
461

größte Zahl

30) Schreiben Sie ein Skript, um die Summe der Elemente in einem Array zu berechnen.

#!/bin/bash

# Deklarieren Sie ein Array

array=(1 65 22 19 94)

# Initialisieren Sie eine Variable, um die Summe zu speichern

Summe=0

# Durchlaufen Sie das Array und fügen Sie jedes Element zur Summe hinzu

für num in ${array[@]}; Tun
am=$((am + am))
Erledigt

# Drucken Sie die Summe aus

echo Die Summe der Elemente im Array ist: $sum

Erläuterung:

` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.

` array=(1 65 22 19 94) `: Das Array wird deklariert und mit Werten initialisiert.

` Summe=0 `:` Summe ` wird auf Null initialisiert, um die Summe der Elemente zu speichern.

` für num in ${array[@]}; Tun `: A` für Die Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.

` am=$((am + am)) `: Innerhalb der Schleife jedes Element ` Auf eins ` wird dem ` hinzugefügt Summe ` variabel.

` Erledigt `: Das ` für ` Schleife ist geschlossen.

„echo Die Summe der Elemente im Array ist: $sum“: Schließlich gibt das Skript die Summe aller Elemente im Array aus.

462

Summe der Elemente

Erfahren Sie mehr über Shell-Skripte

Abschluss

Wir alle wissen, dass Shell-Skripte sehr nützlich sind, um die Arbeitsproduktivität zu steigern und auch Zeit zu sparen. In diesem Artikel haben wir es also behandelt 30 sehr nützliche und am meisten betrügerische Beispiele für Shell-Skripte . Wir hoffen, dass diese vollständige Anleitung zum Beispiel für Shell-Skripte Ihnen hilft, alles über die Shell-Skripte zu verstehen.




echo Erstes Argument:
echo Zweites Argument:

Wenn wir das Skript mit „.example.sh hello_1 hello_2“ ausführen, wird Folgendes ausgegeben:

CLI-Argumente

CLI-Argumente

11) Wie verwenden Sie die for-Schleife, um eine Liste von Werten zu durchlaufen?

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

Früchte = (Apfel, Banane, Kirsche, Dattel)
für Obst in ${fruits[@]}; Tun
echo Aktuelle Frucht: $fruit
Erledigt

Erläuterung:

Die Zeile „fruits=“ erstellt ein Array mit dem Namen „Früchte“ mit vier Elementen: Apfel, Banane, Kirsche und Dattel.

  • für Obst in ${fruits[@]}; do: Diese Zeile startet eine for-Schleife. Hier ist, was jeder Teil bedeutet:
  • für Obst: Dies deklariert eine Schleifenvariable namens Obst. In jeder Iteration der Schleife speichert Fruit den Wert des aktuellen Elements aus dem Fruit-Array.
  • ${fruits[@]}: Dies ist eine Array-Erweiterung, die alle Elemente aus dem Fruit-Array übernimmt. Die ${…}-Syntax stellt sicher, dass jedes Element als separates Element behandelt wird.
  • do: Dieses Schlüsselwort markiert den Anfang des Schleifenkörpers.
  • echo Aktuelle Frucht: $fruit: Innerhalb der Schleife verwendet diese Zeile den Echo-Befehl, um den aktuellen Wert der Schleifenvariablen Frucht anzuzeigen. Für jede Frucht im Array wird eine Meldung wie Aktuelle Frucht: Apfel ausgegeben.
  • done: Dieses Schlüsselwort markiert das Ende des Schleifenkörpers. Es teilt dem Skript mit, dass die Schleife beendet ist.
for-Schleife

for-Schleife

12) Schreiben Sie ein Shell-Skript, das mithilfe einer Schleife die Summe der ganzen Zahlen von 1 bis N berechnet.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

echo Geben Sie eine Zahl (N) ein:
lies N
Summe=0
for (( i=1; i<=$N; i++ )); Tun
sum=$((sum + i))
Erledigt
echo Die Summe der ganzen Zahlen von 1 bis $N ist: $sum

Erläuterung:
Das Skript fordert Sie zunächst dazu auf, mithilfe von „read“ eine Zahl (N) einzugeben. Diese Zahl bestimmt, wie oft die Schleife ausgeführt wird.

  1. Die Variablensumme wird auf 0 initialisiert. Diese Variable verfolgt die Summe der Ganzzahlen.
  2. Die for-Schleife beginnt mit for (( i=1; i<=$N; i++ )). Diese Schleifenstruktur wird verwendet, um eine Reihe von Aktionen eine bestimmte Anzahl von Malen zu wiederholen, in diesem Fall von 1 bis zum Wert N.
  3. Innerhalb der Schleife passieren folgende Dinge:
    • i=1 setzt die Schleifenvariable i zu Beginn jeder Iteration auf 1.
    • Die Schleifenbedingung i<=$N prüft, ob i immer noch kleiner oder gleich der angegebenen Zahl N ist.
    • Wenn die Bedingung wahr ist, wird der Schleifenkörper ausgeführt.
    • sum=$((sum + i)) berechnet den neuen Wert von sum, indem der aktuelle Wert von i dazu addiert wird. Dadurch werden die ganzen Zahlen von 1 bis zum aktuellen i-Wert addiert.
  4. Nach jeder Iteration erhöht i++ den Wert von i um 1.
  5. Die Schleife läuft weiter, bis die Bedingung i<=$N falsch wird (wenn i größer als N wird).
  6. Sobald die Schleife beendet ist, zeigt das Skript die Summe der ganzen Zahlen von 1 bis zur eingegebenen Zahl N an.

439

13) Erstellen Sie ein Skript, das nach einem bestimmten Wort in einer Datei sucht und dessen Vorkommen zählt.

Erstellen Sie einen Skriptnamen „word_count.sh“.

#!/bin/bash

echo Geben Sie das Wort ein, nach dem gesucht werden soll:
Zielwort lesen
echo Geben Sie den Dateinamen ein:
Dateinamen lesen
count=$(grep -o -w $target_word $filename | wc -l)
echo Das Wort „$target_word“ kommt $count mal in „$filename“ vor.

Erläuterung:

  • echo Geben Sie das zu suchende Wort ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, ein Wort einzugeben, nach dem er in einer Datei suchen möchte.
  • read target_word: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens target_word.
  • echo Geben Sie den Dateinamen ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, den Namen der Datei einzugeben, in der er suchen möchte.
  • Dateinamen lesen: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens Dateiname.
  • count=$(grep -o -w $target_word $filename | wc -l): Diese Zeile erledigt die Hauptarbeit des Skripts. Lassen Sie es uns weiter aufschlüsseln:
    • grep -o -w $target_word $filename: Dieser Teil des Befehls sucht nach Vorkommen des target_word im angegebenen Dateinamen. Die Optionen -o und -w stellen sicher, dass nur Ganzwortübereinstimmungen gezählt werden.
    • |: Dies ist eine Pipe, die die Ausgabe des vorherigen Befehls übernimmt und als Eingabe an den nächsten Befehl sendet.
    • wc -l: Dieser Teil des Befehls verwendet den Befehl wc, um die Anzahl der Zeilen in der Eingabe zu zählen. Die Option -l zählt gezielt die Zeilen.
    • Der gesamte Befehl berechnet die Anzahl der Vorkommen des Zielworts in der Datei und weist diese Anzahl der Variablen coun zu

441

14) Erklären Sie die Unterschiede zwischen Standardausgabe (stdout) und Standardfehler (stderr).

Der Hauptunterschied zwischen Standardausgabe (stdout) und Standardfehler (stderr) ist wie folgt:

  • Standardausgabe (stdout): Dies ist der Standardausgabestream, in den die reguläre Ausgabe eines Befehls geht. Es wird standardmäßig auf dem Terminal angezeigt. Sie können es mit> in eine Datei umleiten.
  • Standardfehler (stderr): Dies ist der Ausgabestream für Fehlermeldungen und Warnungen. Es wird standardmäßig auch auf dem Terminal angezeigt. Sie können es mit 2> in eine Datei umleiten.

15) Erklären Sie das Konzept bedingter Anweisungen im Shell-Scripting.

Bedingte Anweisungen im Shell-Scripting ermöglichen es uns, Entscheidungen zu treffen und den Ablauf unseres Skripts auf der Grundlage bestimmter Bedingungen zu steuern. Sie ermöglichen unserem Skript, unterschiedliche Befehlssätze auszuführen, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist. Die primären bedingten Anweisungen beim Shell-Scripting sind die if-Anweisung, die elif-Anweisung (optional) und die else-Anweisung (optional).

Hier ist die Grundstruktur einer bedingten Anweisung im Shell-Scripting:

if [ Bedingung ]; Dann
# Befehle, die ausgeführt werden sollen, wenn die Bedingung wahr ist
elif [ another_condition ]; Dann
# Befehle, die ausgeführt werden sollen, wenn another_condition wahr ist (optional)
anders
# Befehle, die ausgeführt werden sollen, wenn keine der Bedingungen wahr ist (optional)
Sei

Erläuterung:

  • [ Bedingung ] = Befehl, der die Bedingung auswertet und einen Exit-Status „wahr“ (0) oder „falsch“ (ungleich Null) zurückgibt.
  • then = Es handelt sich um ein Schlüsselwort, das angibt, dass die darauf folgenden Befehle ausgeführt werden, wenn die Bedingung „true“ ergibt.
  • elif = (Abkürzung für else if) Dies ist ein Abschnitt, der es uns ermöglicht, zusätzliche zu überprüfende Bedingungen anzugeben.
  • else = es ist ein Abschnitt, der Befehle enthält, die ausgeführt werden, wenn keine der Bedingungen wahr ist.
  • fi = Es ist ein Schlüsselwort, das das Ende des bedingten Blocks markiert.

16) Wie liest man Zeilen aus einer Datei in einem Shell-Skript?

Zu Zeilen lesen Aus einer Datei innerhalb eines Shell-Skripts können wir verschiedene Methoden verwenden, aber ein gängiger Ansatz ist die Verwendung einer While-Schleife in Kombination mit dem Lesebefehl. So können wir es machen:

Java-Typkonvertierung und -Casting

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
while IFS= read -r line; Tun
echo Zeile gelesen: $line
# Fügen Sie hier Ihre Verarbeitungslogik hinzu
erledigt <$file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=/home/jayeshkumar/jayesh.txt: Diese Zeile definiert die Variablendatei und weist den vollständigen Pfad zur Datei jayesh.txt im Verzeichnis /home/jayeshkumar zu. Ändern Sie diesen Pfad so, dass er mit dem tatsächlichen Pfad der Datei übereinstimmt, die Sie lesen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Es prüft, ob die durch die Variable $file angegebene Datei existiert. Das Flag -e prüft, ob eine Datei vorhanden ist.
  4. while IFS= read -r line; do: Diese Zeile initiiert eine While-Schleife, die Zeilen aus der Datei liest.
    • IFS=: Das IFS (Internal Field Separator) wird auf einen leeren Wert gesetzt, um führende und nachfolgende Leerzeichen beizubehalten.
    • read -r line: Dies liest die aktuelle Zeile aus der Datei und speichert sie in der Variablen line.
  5. echo Zeile gelesen: $line: Diese Zeile gibt den Inhalt der Zeile aus, die aus der Datei gelesen wurde. Die Variable $line enthält den Inhalt der aktuellen Zeile.
  6. # Fügen Sie hier Ihre Verarbeitungslogik hinzu: Dies ist ein Platzhalterkommentar, in dem Sie Ihre eigene Logik zur Verarbeitung jeder Zeile hinzufügen können. Beispielsweise können Sie die Zeile analysieren, Informationen extrahieren oder bestimmte Aktionen basierend auf dem Inhalt ausführen.
  7. done <$file: Dies markiert das Ende der while-Schleife. Das < $file leitet den Inhalt der Datei um, damit er von der Schleife gelesen werden kann.
  8. else: Wenn die Datei nicht existiert (die Bedingung in der if-Anweisung ist falsch), führt das Skript den Code unter dem else-Zweig aus.
  9. echo Datei nicht gefunden: $file: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde.
  10. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei lesen

Datei lesen

Hier haben wir „“ verwendet pwd ` Befehl, um den Pfad des aktuellen Verzeichnisses abzurufen.

17) Schreiben Sie eine Funktion in ein Shell-Skript, die die Fakultät einer bestimmten Zahl berechnet.

Hier ist das Skript, dasBerechnen Sie die Fakultäteiner gegebenen Zahl.

#!/bin/bash
# Definieren Sie eine Funktion zur Berechnung der Fakultät
berechne_faktorial() {
num=
Tatsache=1
for ((i=1; i<=num; i++)); Tun
fact=$((fact * i))
Erledigt
echo $fact
}
# Fordern Sie den Benutzer auf, eine Nummer einzugeben
echo Geben Sie eine Zahl ein:
lese input_num
# Rufen Sie die Funktion „calcure_factorial“ mit der Eingabenummer auf
factial_result=$(calculate_factorial $input_num)
# Zeigen Sie das faktorielle Ergebnis an
echo Factorial von $input_num ist: $factorial_result

Erläuterung:

  1. Das Skript beginnt mit der Shebang-Zeile #!/bin/bash, um den Interpreter anzugeben.
  2. berechne_faktorial() ist als Funktion definiert. Es benötigt ein Argument, num, das die Zahl ist, für die die Fakultät berechnet werden muss.
  3. Innerhalb der Funktion wird fact auf 1 initialisiert. Diese Variable speichert das Fakultätsergebnis.
  4. Die for-Schleife iteriert von 1 bis zur angegebenen Zahl (num). In jeder Iteration multipliziert es den aktuellen Wert von fact mit dem Schleifenindex i.
  5. Nach Abschluss der Schleife enthält die Faktenvariable die berechnete Fakultät.
  6. Das Skript fordert den Benutzer mit „read“ zur Eingabe einer Zahl auf.
  7. Die Funktion „calcure_factorial“ wird mit der vom Benutzer angegebenen Zahl aufgerufen und das Ergebnis wird in der Variablen „factorial_result“ gespeichert.
  8. Abschließend zeigt das Skript das berechnete Fakultätsergebnis an.
Fakultät

Fakultät

18) Wie gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um?

In einem Shell-Skript können Sie Signale wie Strg+C (auch bekannt als SIGINT) mit dem Trap-Befehl verarbeiten. Strg+C generiert ein SIGINT-Signal, wenn der Benutzer es drückt, um das laufende Skript oder Programm zu unterbrechen. Mithilfe des Trap-Befehls können Sie Aktionen festlegen, die ausgeführt werden sollen, wenn ein bestimmtes Signal empfangen wird. So gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um:

#!/bin/bash
Aufräumen() {
echo Skript unterbrochen. Bereinigung wird durchgeführt…
# Fügen Sie hier Ihre Bereinigungsaktionen hinzu
Ausgang 1
}
# Richten Sie eine Falle ein, um die Bereinigungsfunktion aufzurufen, wenn Strg+C (SIGINT) empfangen wird
Fallenbereinigung SIGINT
# Rest Ihres Skripts
echo Laufen…
Schlaf 10
echo Fertig.

Der Umgang mit Signalen ist wichtig, um Skripte robust zu machen und sicherzustellen, dass sie unerwartete Unterbrechungen ordnungsgemäß verarbeiten. Sie können die Bereinigungsfunktion an Ihre spezifischen Anforderungen anpassen, z. B. Dateien schließen, Prozesse stoppen oder Informationen protokollieren, bevor das Skript beendet wird.

Erläuterung:

  1. #!/bin/bash: Diese Shebang-Zeile gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll.
  2. cleanup() { … }: Dies definiert eine Funktion namens cleanup. In diese Funktion können Sie alle Aktionen einschließen, die ausgeführt werden müssen, wenn das Skript unterbrochen wird, z. B. das Schließen von Dateien, das Freigeben von Ressourcen oder das Durchführen anderer Bereinigungsaufgaben.
  3. trap cleanup SIGINT: Der trap-Befehl wird zum Einrichten eines Signalhandlers verwendet. In diesem Fall wird angegeben, dass die Bereinigungsfunktion ausgeführt werden soll, wenn das SIGINT-Signal (Strg+C) empfangen wird.
  4. echo Running…, sleep 10, echo Finished.: Dies sind nur Beispielbefehle, um die Ausführung eines Skripts zu simulieren.

446

19) Erstellen Sie ein Skript, das nach doppelten Zeilen in einer Textdatei sucht und diese entfernt.

Hier ist unser Linux-Skript, in dem wir doppelte Zeilen aus einer Textdatei entfernen.

#!/bin/bash
input_file=input.txt
Ausgabedatei=Ausgabe.txt
$input_file | sortieren uniq> $output_file
echo Doppelte Zeilen erfolgreich entfernt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Variable input_file wird auf den Namen der Eingabedatei gesetzt, die doppelte Zeilen enthält (ändern Sie diesen in Ihren tatsächlichen Namen der Eingabedatei).
  3. Die Variable „output_file“ wird auf den Namen der Ausgabedatei gesetzt, aus der die Duplikate entfernt werden (ändern Sie diesen in den gewünschten Namen der Ausgabedatei).
  4. Das Skript verwendet den Sortierbefehl, um die Zeilen in der Eingabedatei zu sortieren. Durch das Sortieren der Zeilen wird sichergestellt, dass doppelte Zeilen gruppiert werden.
  5. Die sortierten Zeilen werden dann durch den Befehl uniq geleitet, der aufeinanderfolgende doppelte Zeilen entfernt. Die Ausgabe dieses Prozesses wird in die Ausgabedatei umgeleitet.
  6. Nachdem die Duplikate entfernt wurden, gibt das Skript eine Erfolgsmeldung aus.
Entfernen doppelter Zeilen

Entfernen doppelter Zeilen

Hier verwenden wir „ Katze ` um den Text in der Textdatei anzuzeigen.

20) Schreiben Sie ein Skript, das ein sicheres Zufallspasswort generiert.

Hier ist unser Skript zum Generieren eines sicheren Zufallspassworts.

#!/bin/bash
# Funktion zum Generieren eines zufälligen Passworts
generiere Passwort() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Rufen Sie die Funktion auf und speichern Sie das generierte Passwort
passwort=$(generate_password)
echo Generiertes Passwort: $password

Hinweis: Der Benutzer kann die Länge seines Passworts entsprechend ändern, indem er die Zahl „12“ ersetzt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass es mit der Bash-Shell interpretiert werden soll.
  2. Die Funktion „generate_password“ ist so definiert, dass sie ein zufälliges Passwort generiert. So funktioniert das:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • falten -w 12 unterteilt die gefilterten Zufallsdaten in Zeilen mit einer Breite von jeweils 12 Zeichen.
    • head -n 1 wählt die erste Zeile aus und gibt uns effektiv eine zufällige Folge von Zeichen der Länge 12.
  3. Der Variable „password“ wird das Ergebnis des Aufrufs der Funktion „generate_password“ zugewiesen.
  4. Abschließend wird das generierte Passwort mittels Echo angezeigt.

448

21) Schreiben Sie ein Shell-Skript, das die Gesamtgröße aller Dateien in einem Verzeichnis berechnet.

Hier ist ein Shell-Skript zur Berechnung der Gesamtgröße aller Dateien in einem Verzeichnis.

#!/bin/bash
Verzeichnis=/Pfad/zu/Ihrem/Verzeichnis
total_size=$(du -csh $directory | grep total | awk ‚{print }‘)
echo Gesamtgröße der Dateien in $directory: $total_size

Erläuterung:

  1. Das Skript beginnt mit dem Befehl #!/bin/bash, der darauf hinweist, dass es mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Verzeichnisvariable wird auf den Pfad des Verzeichnisses gesetzt, für das Sie die Gesamtdateigröße berechnen möchten. Ersetzen Sie /path/to/your/directory durch den tatsächlichen Pfad.
  3. Der Befehl du wird verwendet, um die Dateispeichernutzung abzuschätzen. Die verwendeten Optionen sind:
    • -c: Erzeuge eine Gesamtsumme.
    • -s: Zeigt nur die Gesamtgröße des angegebenen Verzeichnisses an.
    • -h: Druckgrößen in einem für Menschen lesbaren Format (z. B. KB, MB, GB).
  4. Die Ausgabe von du wird an grep total weitergeleitet, um die Zeile herauszufiltern, die die Gesamtgröße enthält.
  5. awk „{print }“ wird verwendet, um das erste Feld (Gesamtgröße) aus der Zeile zu extrahieren.
  6. Die berechnete Gesamtgröße wird in der Variablen total_size gespeichert.
  7. Abschließend zeigt das Skript mithilfe von Echo die Gesamtgröße an.
Gesamtgröße der Dateien

Gesamtgröße der Dateien

Hier haben wir „“ verwendet pwd ` Befehl, um den aktuellen Verzeichnispfad anzuzeigen.

22) Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting.

Besonderheit `if`Staiftement `elif`-Erklärung
Zweck Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting. Stellt alternative Bedingungen bereit, um zu überprüfen, ob die anfängliche If-Bedingung falsch ist.
Verwendung Wird für den Anfangszustand verwendet. Wird nach der anfänglichen if-Bedingung verwendet, um zusätzliche Bedingungen zu überprüfen.
Anzahl der Blöcke Kann nur einen if-Block haben. Kann mehrere elif-Blöcke haben, aber nur einen else-Block (optional).
Ausführung Führt den mit der if-Anweisung verknüpften Codeblock aus, wenn die Bedingung wahr ist. Wenn die Bedingung falsch ist, wird der else-Block (falls vorhanden) ausgeführt (optional). Überprüft jede Elif-Bedingung der Reihe nach. Wenn eine elif-Bedingung wahr ist, wird der entsprechende Codeblock ausgeführt und das Skript verlässt den gesamten bedingten Block. Wenn keine der elif-Bedingungen wahr ist, wird der else-Block (falls vorhanden) ausgeführt.
Verschachtelte Strukturen Kann in anderen if-, elif- oder else-Blöcken verschachtelt werden. Kann nicht in einem anderen elif-Block verschachtelt werden, kann aber in einem if- oder else-Block verwendet werden.

Lassen Sie es uns anhand eines Beispiels verstehen.

#!/bin/bash
Zahl=5
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
anders
echo $number ist nicht größer als 10
Sei
Echo ——–
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
elif [ $number -eq 10 ]; Dann
echo $number ist gleich 10
anders
echo $number ist kleiner als 10
Sei

Erläuterung:

In diesem Beispiel prüft der erste if-Block, ob die Zahl größer als 10 ist. Wenn nicht, gibt er eine Meldung aus, die angibt, dass die Zahl nicht größer als 10 ist. Der zweite Block mit elif-Anweisungen prüft nacheinander mehrere Bedingungen, bis eine davon wahr ist. Da in diesem Fall der Wert von number 5 ist, lautet die Ausgabe:

if_elif Unterschied

if_elif Unterschied

23) Wie nutzt man eine While-Schleife, um Befehle wiederholt auszuführen?

Bei der Shell-Skripterstellung wird eine While-Schleife verwendet, um eine Reihe von Befehlen wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist. Die Schleife führt die Befehle so lange aus, bis die Bedingung falsch wird.

Hier ist die grundlegende Syntax einer While-Schleife:

while [ Bedingung ]; Tun
# Auszuführende Befehle
Erledigt

Erläuterung:

  1. Die „while“-Schleife beginnt mit dem Schlüsselwort „while“, gefolgt von einer in eckigen Klammern eingeschlossenen Bedingung „[ ]“.
  2. Der Schleifenkörper, der die auszuführenden Befehle enthält, ist in die Schlüsselwörter „do“ und „done“ eingeschlossen.
  3. Die Schleife prüft zunächst die Bedingung. Wenn die Bedingung wahr ist, werden die Befehle im Schleifenkörper ausgeführt. Nachdem der Schleifenkörper ausgeführt wurde, wird die Bedingung erneut überprüft und der Vorgang wiederholt, bis die Bedingung falsch wird.

Beispiel: Wenn wir Zahlen von 1 bis 5 drucken möchten

#!/bin/bash
Zähler=1
while [ $counter -le 5 ]; Tun
Echo-Nummer: $counter
counter=$((counter + 1))
Erledigt

Erläuterung:

  • Die Zählervariable wird auf 1 gesetzt.
  • Die while-Schleife prüft, ob der Wert von counter kleiner oder gleich 5 ist. Solange diese Bedingung erfüllt ist, wird die Schleife weiter ausgeführt.
  • Innerhalb der Schleife wird der aktuelle Wert des Zählers mithilfe von Echo ausgegeben.
  • Der Zähler wird mit dem Ausdruck $((Zähler + 1)) um 1 erhöht.
while-Schleife

while-Schleife

24) Erstellen Sie ein Shell-Skript, das alle leeren Dateien in einem Verzeichnis findet und auflistet.

Shell-Skript, mit dem Sie mithilfe der Befehle „find“ und „stat“ alle leeren Dateien in einem Verzeichnis suchen und auflisten können:

#!/bin/bash
Verzeichnis=″
if [ -z $directory ]; Dann
Echo-Nutzung:

Bei allen Linux-Distributionen ist das Shell-Skript wie ein Zauberstab, der den Prozess automatisiert, Benutzern Zeit spart und die Produktivität steigert. Dieses Tutorial zur SOLL-Skripterstellung stellt Ihnen mehr als 25 SOLL-Skripting-Beispiele vor.

Aber bevor wir zum Thema übergehen Shell-Scripting Beispiele: Lassen Sie uns Shell-Skripte und die tatsächlichen Anwendungsfälle von Shell-Skripten verstehen.

Was ist Shell-Skript?

Nun, die Schale ist eine CLI ( Befehlszeileninterpreter ), das in einem Textfenster ausgeführt wird, in dem Benutzer Shell-Befehle verwalten und ausführen können. Andererseits wird der Prozess des Schreibens einer Reihe von Befehlen, die auf einem Linux-System ausgeführt werden sollen. Eine Datei, die solche Anweisungen enthält, wird als Bash-Skript bezeichnet.

Verwendung von Shell-Skripten

Im Folgenden sind einige häufige Verwendungszwecke von Shell Script aufgeführt:

  • Aufgabenautomatisierung – Es kann verwendet werden, um sich wiederholende Aufgaben wie regelmäßige Backups und Softwareinstallationsaufgaben zu automatisieren.
  • Anpassung - Man kann Shell-Skripte verwenden, um seine Befehlszeilenumgebung zu entwerfen und seine Aufgabe je nach Bedarf einfach auszuführen.
  • Dokumentenverwaltung - Die Shell-Skripte können auch zum Verwalten und Bearbeiten von Dateien und Verzeichnissen verwendet werden, beispielsweise zum Verschieben, Kopieren, Umbenennen oder Löschen von Dateien.

Beispiele für Shell-Skripte unter Linux

1) Was bedeutet das Shebang (#!) am Anfang eines Shell-Skripts?

Der Mist (#!) am Anfang eines Skripts gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll. Es teilt dem System mit, welche Shell oder welcher Interpreter die Befehle des Skripts interpretieren soll.

Zum Beispiel: Angenommen, wir haben ein Skript mit dem Namen myscript.sh geschrieben in der Bash-Shell:

Mist

Mist

In diesem Beispiel:

  • Das #!/bin/bash am Anfang des Skripts gibt an, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  • Die Echo-Befehle werden zum Drucken von Nachrichten an das Terminal verwendet.

2) Wie führt man ein Shell-Skript über die Befehlszeile aus?

Um ein Shell-Skript über die Befehlszeile auszuführen, müssen wir die folgenden Schritte ausführen:

  • Stellen Sie sicher, dass die Skriptdatei über ausführbare Berechtigungen verfügt chmod-Befehl :
chmod +x myscript.sh>
  • Führen Sie das Skript unter Verwendung seines Dateinamens aus:
./myscript.sh>

Hier muss ersetzt werden myscrtipt.sh mit Ihrem Skriptnamen.

3) Schreiben Sie ein Shell-Skript, das techcodeview.com auf dem Terminal ausgibt.

Erstellen Sie einen Skriptnamen „myscript.sh“ (wir verwenden „ Weil ` Editor, Sie können einen beliebigen Editor auswählen)

vim myscript.sh>

#!/bin/bash
# Dieses Skript druckt techcodeview.com auf dem Terminal
echo techcodeview.com

Namen drucken

Namen drucken

Wir machen unser Skript mit „chmod +x“ ausführbar, führen es dann mit „./myscipt.sh“ aus und erhalten die gewünschte Ausgabe techcodeview.com.

4) Erklären Sie den Zweck des Echo-Befehls beim Shell-Scripting.

Der Echo-Befehl dient der Anzeige von Texten oder Variablen auf dem Terminal. Es wird häufig zum Drucken von Nachrichten, Variablenwerten und zum Generieren von Programmausgaben verwendet.

434

Echo-Befehl

In diesem Beispiel haben wir „echo“ direkt auf dem Terminal ausgeführt, da es innerhalb des Shell-Skripts genauso funktioniert.

5) Wie kann man einer Variablen in einem Shell-Skript einen Wert zuweisen?

Variablen werden Werte mit dem Zuweisungsoperator = zugewiesen.

Zum Beispiel:

#!/bin/bash
# Einer Variablen einen Wert zuweisen
Name=Jayesh
Alter=21
echo $name $age

Erläuterung:

  • Der Namensvariablen wird der Wert Jayesh zugewiesen.
  • Der Altersvariable wird der Wert 21 zugewiesen.
  • echo wird zum Drucken verwendet und `$name` `$age` wird verwendet, um den in den Variablen gespeicherten Wert aufzurufen.

435

6) Schreiben Sie ein Shell-Skript, das den Namen eines Benutzers als Eingabe verwendet und ihn begrüßt.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash
# Fragen Sie den Benutzer nach seinem Namen
echo Wie heißt du?
Namen lesen
# Begrüßen Sie den Benutzer
echo Hallo, $name! Freut mich, Sie kennenzulernen.

Erläuterung:

  • #!/bin/bash: Das ist die Shebang-Zeile. Es weist das System an, den Bash-Interpreter zum Ausführen des Skripts zu verwenden.
  • # Fragen Sie den Benutzer nach seinem Namen: Dies ist ein Kommentar. Es bietet Kontext zum kommenden Code. Kommentare werden vom Interpreter ignoriert.
  • echo Wie heißt du?: Der echo-Befehl wird verwendet, um den Text in doppelten Anführungszeichen auf dem Terminal anzuzeigen.
  • Lesename: Der Lesebefehl wartet auf die Eingabe von Text durch den Benutzer und speichert ihn im Variablennamen.
  • echo Hallo, $name! Freut mich, Sie kennenzulernen.: Diese Zeile verwendet den echo-Befehl, um eine Begrüßungsnachricht zu drucken, die den Wert der Namensvariablen enthält, der aus der Benutzereingabe erfasst wurde.

436

7) Wie fügt man einem Shell-Skript Kommentare hinzu?

Kommentare im Shell-Scripting werden verwendet, um Erklärungen oder Kontext zum Code bereitzustellen. Sie werden vom Interpreter ignoriert und sind nur für Menschen gedacht, die das Skript lesen. Mit dem #-Symbol können Sie Kommentare hinzufügen.

#!/bin/bash
# Dies ist ein Kommentar, der den Zweck des Skripts erläutert
echo gfg

8) Erstellen Sie ein Shell-Skript, das prüft, ob eine Datei im aktuellen Verzeichnis vorhanden ist.

Hier ist ein Skript, das prüft, ob eine Datei namens example.txt im aktuellen Verzeichnis vorhanden ist:

#!/bin/bash
file=example.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
echo Datei existiert: $file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=example.txt: Diese Zeile definiert die Variablendatei und weist ihr den Wert example.txt zu. Sie können dies durch den Namen der Datei ersetzen, nach der Sie suchen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Die Bedingung [ -e $file ] prüft, ob die durch den Wert der Dateivariablen angegebene Datei existiert. Das Flag -e wird verwendet, um zu prüfen, ob eine Datei vorhanden ist.
  4. echo Datei existiert: $datei: Wenn die Bedingung wahr ist (d. h. die Datei existiert), gibt diese Zeile eine Meldung aus, die angibt, dass die Datei existiert, zusammen mit dem Namen der Datei.
  5. else: Wenn die Bedingung falsch ist (d. h. die Datei existiert nicht), führt das Skript den Code unter dem else-Zweig aus.
  6. echo Datei nicht gefunden: $datei: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde, zusammen mit dem Namen der Datei.
  7. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei wird gefunden

Datei wird gefunden

9) Was ist der Unterschied zwischen einfachen Anführungszeichen (‘) und doppelten Anführungszeichen () beim Shell-Scripting?

Einfache Anführungszeichen (‘) und doppelte Anführungszeichen () werden zum Einschließen von Zeichenfolgen in Shell-Skripten verwendet, haben jedoch unterschiedliche Verhaltensweisen:

  • Einfache Anführungszeichen: Alles zwischen einfachen Anführungszeichen wird als Literalzeichenfolge behandelt. Variablennamen und die meisten Sonderzeichen werden nicht erweitert.
  • Doppelte Anführungszeichen: Variablen und bestimmte Sonderzeichen in doppelten Anführungszeichen werden erweitert. Der Inhalt unterliegt der Variablenersetzung und der Befehlsersetzung.

#!/bin/bash

abcd=Hallo
echo ‚$abcd‘ # Ausgabe: $abcd
echo $abcd # Ausgabe: Hallo

10) Wie können Sie Befehlszeilenargumente in einem Shell-Skript verwenden?

Kommandozeilenargumente sind Werte, die einem Skript bei seiner Ausführung bereitgestellt werden. Auf sie kann innerhalb des Skripts über spezielle Variablen wie $1, $2 usw. zugegriffen werden, wobei $1 das erste Argument, $2 das zweite Argument usw. darstellt.

Zum Beispiel: Wenn unser Skriptname in „example.sh“ steht

#!/bin/bash

echo Skriptname: $0
echo Erstes Argument: $1
echo Zweites Argument: $2

Wenn wir das Skript mit „.example.sh hello_1 hello_2“ ausführen, wird Folgendes ausgegeben:

CLI-Argumente

CLI-Argumente

11) Wie verwenden Sie die for-Schleife, um eine Liste von Werten zu durchlaufen?

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

Früchte = (Apfel, Banane, Kirsche, Dattel)
für Obst in ${fruits[@]}; Tun
echo Aktuelle Frucht: $fruit
Erledigt

Erläuterung:

Die Zeile „fruits=“ erstellt ein Array mit dem Namen „Früchte“ mit vier Elementen: Apfel, Banane, Kirsche und Dattel.

  • für Obst in ${fruits[@]}; do: Diese Zeile startet eine for-Schleife. Hier ist, was jeder Teil bedeutet:
  • für Obst: Dies deklariert eine Schleifenvariable namens Obst. In jeder Iteration der Schleife speichert Fruit den Wert des aktuellen Elements aus dem Fruit-Array.
  • ${fruits[@]}: Dies ist eine Array-Erweiterung, die alle Elemente aus dem Fruit-Array übernimmt. Die ${…}-Syntax stellt sicher, dass jedes Element als separates Element behandelt wird.
  • do: Dieses Schlüsselwort markiert den Anfang des Schleifenkörpers.
  • echo Aktuelle Frucht: $fruit: Innerhalb der Schleife verwendet diese Zeile den Echo-Befehl, um den aktuellen Wert der Schleifenvariablen Frucht anzuzeigen. Für jede Frucht im Array wird eine Meldung wie Aktuelle Frucht: Apfel ausgegeben.
  • done: Dieses Schlüsselwort markiert das Ende des Schleifenkörpers. Es teilt dem Skript mit, dass die Schleife beendet ist.
for-Schleife

for-Schleife

12) Schreiben Sie ein Shell-Skript, das mithilfe einer Schleife die Summe der ganzen Zahlen von 1 bis N berechnet.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

echo Geben Sie eine Zahl (N) ein:
lies N
Summe=0
for (( i=1; i<=$N; i++ )); Tun
sum=$((sum + i))
Erledigt
echo Die Summe der ganzen Zahlen von 1 bis $N ist: $sum

Erläuterung:
Das Skript fordert Sie zunächst dazu auf, mithilfe von „read“ eine Zahl (N) einzugeben. Diese Zahl bestimmt, wie oft die Schleife ausgeführt wird.

  1. Die Variablensumme wird auf 0 initialisiert. Diese Variable verfolgt die Summe der Ganzzahlen.
  2. Die for-Schleife beginnt mit for (( i=1; i<=$N; i++ )). Diese Schleifenstruktur wird verwendet, um eine Reihe von Aktionen eine bestimmte Anzahl von Malen zu wiederholen, in diesem Fall von 1 bis zum Wert N.
  3. Innerhalb der Schleife passieren folgende Dinge:
    • i=1 setzt die Schleifenvariable i zu Beginn jeder Iteration auf 1.
    • Die Schleifenbedingung i<=$N prüft, ob i immer noch kleiner oder gleich der angegebenen Zahl N ist.
    • Wenn die Bedingung wahr ist, wird der Schleifenkörper ausgeführt.
    • sum=$((sum + i)) berechnet den neuen Wert von sum, indem der aktuelle Wert von i dazu addiert wird. Dadurch werden die ganzen Zahlen von 1 bis zum aktuellen i-Wert addiert.
  4. Nach jeder Iteration erhöht i++ den Wert von i um 1.
  5. Die Schleife läuft weiter, bis die Bedingung i<=$N falsch wird (wenn i größer als N wird).
  6. Sobald die Schleife beendet ist, zeigt das Skript die Summe der ganzen Zahlen von 1 bis zur eingegebenen Zahl N an.

439

13) Erstellen Sie ein Skript, das nach einem bestimmten Wort in einer Datei sucht und dessen Vorkommen zählt.

Erstellen Sie einen Skriptnamen „word_count.sh“.

#!/bin/bash

echo Geben Sie das Wort ein, nach dem gesucht werden soll:
Zielwort lesen
echo Geben Sie den Dateinamen ein:
Dateinamen lesen
count=$(grep -o -w $target_word $filename | wc -l)
echo Das Wort „$target_word“ kommt $count mal in „$filename“ vor.

Erläuterung:

  • echo Geben Sie das zu suchende Wort ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, ein Wort einzugeben, nach dem er in einer Datei suchen möchte.
  • read target_word: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens target_word.
  • echo Geben Sie den Dateinamen ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, den Namen der Datei einzugeben, in der er suchen möchte.
  • Dateinamen lesen: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens Dateiname.
  • count=$(grep -o -w $target_word $filename | wc -l): Diese Zeile erledigt die Hauptarbeit des Skripts. Lassen Sie es uns weiter aufschlüsseln:
    • grep -o -w $target_word $filename: Dieser Teil des Befehls sucht nach Vorkommen des target_word im angegebenen Dateinamen. Die Optionen -o und -w stellen sicher, dass nur Ganzwortübereinstimmungen gezählt werden.
    • |: Dies ist eine Pipe, die die Ausgabe des vorherigen Befehls übernimmt und als Eingabe an den nächsten Befehl sendet.
    • wc -l: Dieser Teil des Befehls verwendet den Befehl wc, um die Anzahl der Zeilen in der Eingabe zu zählen. Die Option -l zählt gezielt die Zeilen.
    • Der gesamte Befehl berechnet die Anzahl der Vorkommen des Zielworts in der Datei und weist diese Anzahl der Variablen coun zu

441

14) Erklären Sie die Unterschiede zwischen Standardausgabe (stdout) und Standardfehler (stderr).

Der Hauptunterschied zwischen Standardausgabe (stdout) und Standardfehler (stderr) ist wie folgt:

  • Standardausgabe (stdout): Dies ist der Standardausgabestream, in den die reguläre Ausgabe eines Befehls geht. Es wird standardmäßig auf dem Terminal angezeigt. Sie können es mit> in eine Datei umleiten.
  • Standardfehler (stderr): Dies ist der Ausgabestream für Fehlermeldungen und Warnungen. Es wird standardmäßig auch auf dem Terminal angezeigt. Sie können es mit 2> in eine Datei umleiten.

15) Erklären Sie das Konzept bedingter Anweisungen im Shell-Scripting.

Bedingte Anweisungen im Shell-Scripting ermöglichen es uns, Entscheidungen zu treffen und den Ablauf unseres Skripts auf der Grundlage bestimmter Bedingungen zu steuern. Sie ermöglichen unserem Skript, unterschiedliche Befehlssätze auszuführen, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist. Die primären bedingten Anweisungen beim Shell-Scripting sind die if-Anweisung, die elif-Anweisung (optional) und die else-Anweisung (optional).

Hier ist die Grundstruktur einer bedingten Anweisung im Shell-Scripting:

if [ Bedingung ]; Dann
# Befehle, die ausgeführt werden sollen, wenn die Bedingung wahr ist
elif [ another_condition ]; Dann
# Befehle, die ausgeführt werden sollen, wenn another_condition wahr ist (optional)
anders
# Befehle, die ausgeführt werden sollen, wenn keine der Bedingungen wahr ist (optional)
Sei

Erläuterung:

  • [ Bedingung ] = Befehl, der die Bedingung auswertet und einen Exit-Status „wahr“ (0) oder „falsch“ (ungleich Null) zurückgibt.
  • then = Es handelt sich um ein Schlüsselwort, das angibt, dass die darauf folgenden Befehle ausgeführt werden, wenn die Bedingung „true“ ergibt.
  • elif = (Abkürzung für else if) Dies ist ein Abschnitt, der es uns ermöglicht, zusätzliche zu überprüfende Bedingungen anzugeben.
  • else = es ist ein Abschnitt, der Befehle enthält, die ausgeführt werden, wenn keine der Bedingungen wahr ist.
  • fi = Es ist ein Schlüsselwort, das das Ende des bedingten Blocks markiert.

16) Wie liest man Zeilen aus einer Datei in einem Shell-Skript?

Zu Zeilen lesen Aus einer Datei innerhalb eines Shell-Skripts können wir verschiedene Methoden verwenden, aber ein gängiger Ansatz ist die Verwendung einer While-Schleife in Kombination mit dem Lesebefehl. So können wir es machen:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
while IFS= read -r line; Tun
echo Zeile gelesen: $line
# Fügen Sie hier Ihre Verarbeitungslogik hinzu
erledigt <$file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=/home/jayeshkumar/jayesh.txt: Diese Zeile definiert die Variablendatei und weist den vollständigen Pfad zur Datei jayesh.txt im Verzeichnis /home/jayeshkumar zu. Ändern Sie diesen Pfad so, dass er mit dem tatsächlichen Pfad der Datei übereinstimmt, die Sie lesen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Es prüft, ob die durch die Variable $file angegebene Datei existiert. Das Flag -e prüft, ob eine Datei vorhanden ist.
  4. while IFS= read -r line; do: Diese Zeile initiiert eine While-Schleife, die Zeilen aus der Datei liest.
    • IFS=: Das IFS (Internal Field Separator) wird auf einen leeren Wert gesetzt, um führende und nachfolgende Leerzeichen beizubehalten.
    • read -r line: Dies liest die aktuelle Zeile aus der Datei und speichert sie in der Variablen line.
  5. echo Zeile gelesen: $line: Diese Zeile gibt den Inhalt der Zeile aus, die aus der Datei gelesen wurde. Die Variable $line enthält den Inhalt der aktuellen Zeile.
  6. # Fügen Sie hier Ihre Verarbeitungslogik hinzu: Dies ist ein Platzhalterkommentar, in dem Sie Ihre eigene Logik zur Verarbeitung jeder Zeile hinzufügen können. Beispielsweise können Sie die Zeile analysieren, Informationen extrahieren oder bestimmte Aktionen basierend auf dem Inhalt ausführen.
  7. done <$file: Dies markiert das Ende der while-Schleife. Das < $file leitet den Inhalt der Datei um, damit er von der Schleife gelesen werden kann.
  8. else: Wenn die Datei nicht existiert (die Bedingung in der if-Anweisung ist falsch), führt das Skript den Code unter dem else-Zweig aus.
  9. echo Datei nicht gefunden: $file: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde.
  10. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei lesen

Datei lesen

Hier haben wir „“ verwendet pwd ` Befehl, um den Pfad des aktuellen Verzeichnisses abzurufen.

17) Schreiben Sie eine Funktion in ein Shell-Skript, die die Fakultät einer bestimmten Zahl berechnet.

Hier ist das Skript, dasBerechnen Sie die Fakultäteiner gegebenen Zahl.

#!/bin/bash
# Definieren Sie eine Funktion zur Berechnung der Fakultät
berechne_faktorial() {
num=$1
Tatsache=1
for ((i=1; i<=num; i++)); Tun
fact=$((fact * i))
Erledigt
echo $fact
}
# Fordern Sie den Benutzer auf, eine Nummer einzugeben
echo Geben Sie eine Zahl ein:
lese input_num
# Rufen Sie die Funktion „calcure_factorial“ mit der Eingabenummer auf
factial_result=$(calculate_factorial $input_num)
# Zeigen Sie das faktorielle Ergebnis an
echo Factorial von $input_num ist: $factorial_result

Erläuterung:

  1. Das Skript beginnt mit der Shebang-Zeile #!/bin/bash, um den Interpreter anzugeben.
  2. berechne_faktorial() ist als Funktion definiert. Es benötigt ein Argument, num, das die Zahl ist, für die die Fakultät berechnet werden muss.
  3. Innerhalb der Funktion wird fact auf 1 initialisiert. Diese Variable speichert das Fakultätsergebnis.
  4. Die for-Schleife iteriert von 1 bis zur angegebenen Zahl (num). In jeder Iteration multipliziert es den aktuellen Wert von fact mit dem Schleifenindex i.
  5. Nach Abschluss der Schleife enthält die Faktenvariable die berechnete Fakultät.
  6. Das Skript fordert den Benutzer mit „read“ zur Eingabe einer Zahl auf.
  7. Die Funktion „calcure_factorial“ wird mit der vom Benutzer angegebenen Zahl aufgerufen und das Ergebnis wird in der Variablen „factorial_result“ gespeichert.
  8. Abschließend zeigt das Skript das berechnete Fakultätsergebnis an.
Fakultät

Fakultät

18) Wie gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um?

In einem Shell-Skript können Sie Signale wie Strg+C (auch bekannt als SIGINT) mit dem Trap-Befehl verarbeiten. Strg+C generiert ein SIGINT-Signal, wenn der Benutzer es drückt, um das laufende Skript oder Programm zu unterbrechen. Mithilfe des Trap-Befehls können Sie Aktionen festlegen, die ausgeführt werden sollen, wenn ein bestimmtes Signal empfangen wird. So gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um:

#!/bin/bash
Aufräumen() {
echo Skript unterbrochen. Bereinigung wird durchgeführt…
# Fügen Sie hier Ihre Bereinigungsaktionen hinzu
Ausgang 1
}
# Richten Sie eine Falle ein, um die Bereinigungsfunktion aufzurufen, wenn Strg+C (SIGINT) empfangen wird
Fallenbereinigung SIGINT
# Rest Ihres Skripts
echo Laufen…
Schlaf 10
echo Fertig.

Der Umgang mit Signalen ist wichtig, um Skripte robust zu machen und sicherzustellen, dass sie unerwartete Unterbrechungen ordnungsgemäß verarbeiten. Sie können die Bereinigungsfunktion an Ihre spezifischen Anforderungen anpassen, z. B. Dateien schließen, Prozesse stoppen oder Informationen protokollieren, bevor das Skript beendet wird.

Erläuterung:

  1. #!/bin/bash: Diese Shebang-Zeile gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll.
  2. cleanup() { … }: Dies definiert eine Funktion namens cleanup. In diese Funktion können Sie alle Aktionen einschließen, die ausgeführt werden müssen, wenn das Skript unterbrochen wird, z. B. das Schließen von Dateien, das Freigeben von Ressourcen oder das Durchführen anderer Bereinigungsaufgaben.
  3. trap cleanup SIGINT: Der trap-Befehl wird zum Einrichten eines Signalhandlers verwendet. In diesem Fall wird angegeben, dass die Bereinigungsfunktion ausgeführt werden soll, wenn das SIGINT-Signal (Strg+C) empfangen wird.
  4. echo Running…, sleep 10, echo Finished.: Dies sind nur Beispielbefehle, um die Ausführung eines Skripts zu simulieren.

446

19) Erstellen Sie ein Skript, das nach doppelten Zeilen in einer Textdatei sucht und diese entfernt.

Hier ist unser Linux-Skript, in dem wir doppelte Zeilen aus einer Textdatei entfernen.

#!/bin/bash
input_file=input.txt
Ausgabedatei=Ausgabe.txt
$input_file | sortieren uniq> $output_file
echo Doppelte Zeilen erfolgreich entfernt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Variable input_file wird auf den Namen der Eingabedatei gesetzt, die doppelte Zeilen enthält (ändern Sie diesen in Ihren tatsächlichen Namen der Eingabedatei).
  3. Die Variable „output_file“ wird auf den Namen der Ausgabedatei gesetzt, aus der die Duplikate entfernt werden (ändern Sie diesen in den gewünschten Namen der Ausgabedatei).
  4. Das Skript verwendet den Sortierbefehl, um die Zeilen in der Eingabedatei zu sortieren. Durch das Sortieren der Zeilen wird sichergestellt, dass doppelte Zeilen gruppiert werden.
  5. Die sortierten Zeilen werden dann durch den Befehl uniq geleitet, der aufeinanderfolgende doppelte Zeilen entfernt. Die Ausgabe dieses Prozesses wird in die Ausgabedatei umgeleitet.
  6. Nachdem die Duplikate entfernt wurden, gibt das Skript eine Erfolgsmeldung aus.
Entfernen doppelter Zeilen

Entfernen doppelter Zeilen

Hier verwenden wir „ Katze ` um den Text in der Textdatei anzuzeigen.

20) Schreiben Sie ein Skript, das ein sicheres Zufallspasswort generiert.

Hier ist unser Skript zum Generieren eines sicheren Zufallspassworts.

#!/bin/bash
# Funktion zum Generieren eines zufälligen Passworts
generiere Passwort() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Rufen Sie die Funktion auf und speichern Sie das generierte Passwort
passwort=$(generate_password)
echo Generiertes Passwort: $password

Hinweis: Der Benutzer kann die Länge seines Passworts entsprechend ändern, indem er die Zahl „12“ ersetzt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass es mit der Bash-Shell interpretiert werden soll.
  2. Die Funktion „generate_password“ ist so definiert, dass sie ein zufälliges Passwort generiert. So funktioniert das:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • falten -w 12 unterteilt die gefilterten Zufallsdaten in Zeilen mit einer Breite von jeweils 12 Zeichen.
    • head -n 1 wählt die erste Zeile aus und gibt uns effektiv eine zufällige Folge von Zeichen der Länge 12.
  3. Der Variable „password“ wird das Ergebnis des Aufrufs der Funktion „generate_password“ zugewiesen.
  4. Abschließend wird das generierte Passwort mittels Echo angezeigt.

448

21) Schreiben Sie ein Shell-Skript, das die Gesamtgröße aller Dateien in einem Verzeichnis berechnet.

Hier ist ein Shell-Skript zur Berechnung der Gesamtgröße aller Dateien in einem Verzeichnis.

#!/bin/bash
Verzeichnis=/Pfad/zu/Ihrem/Verzeichnis
total_size=$(du -csh $directory | grep total | awk ‚{print $1}‘)
echo Gesamtgröße der Dateien in $directory: $total_size

Erläuterung:

  1. Das Skript beginnt mit dem Befehl #!/bin/bash, der darauf hinweist, dass es mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Verzeichnisvariable wird auf den Pfad des Verzeichnisses gesetzt, für das Sie die Gesamtdateigröße berechnen möchten. Ersetzen Sie /path/to/your/directory durch den tatsächlichen Pfad.
  3. Der Befehl du wird verwendet, um die Dateispeichernutzung abzuschätzen. Die verwendeten Optionen sind:
    • -c: Erzeuge eine Gesamtsumme.
    • -s: Zeigt nur die Gesamtgröße des angegebenen Verzeichnisses an.
    • -h: Druckgrößen in einem für Menschen lesbaren Format (z. B. KB, MB, GB).
  4. Die Ausgabe von du wird an grep total weitergeleitet, um die Zeile herauszufiltern, die die Gesamtgröße enthält.
  5. awk „{print $1}“ wird verwendet, um das erste Feld (Gesamtgröße) aus der Zeile zu extrahieren.
  6. Die berechnete Gesamtgröße wird in der Variablen total_size gespeichert.
  7. Abschließend zeigt das Skript mithilfe von Echo die Gesamtgröße an.
Gesamtgröße der Dateien

Gesamtgröße der Dateien

Hier haben wir „“ verwendet pwd ` Befehl, um den aktuellen Verzeichnispfad anzuzeigen.

22) Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting.

Besonderheit `if`Staiftement `elif`-Erklärung
Zweck Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting. Stellt alternative Bedingungen bereit, um zu überprüfen, ob die anfängliche If-Bedingung falsch ist.
Verwendung Wird für den Anfangszustand verwendet. Wird nach der anfänglichen if-Bedingung verwendet, um zusätzliche Bedingungen zu überprüfen.
Anzahl der Blöcke Kann nur einen if-Block haben. Kann mehrere elif-Blöcke haben, aber nur einen else-Block (optional).
Ausführung Führt den mit der if-Anweisung verknüpften Codeblock aus, wenn die Bedingung wahr ist. Wenn die Bedingung falsch ist, wird der else-Block (falls vorhanden) ausgeführt (optional). Überprüft jede Elif-Bedingung der Reihe nach. Wenn eine elif-Bedingung wahr ist, wird der entsprechende Codeblock ausgeführt und das Skript verlässt den gesamten bedingten Block. Wenn keine der elif-Bedingungen wahr ist, wird der else-Block (falls vorhanden) ausgeführt.
Verschachtelte Strukturen Kann in anderen if-, elif- oder else-Blöcken verschachtelt werden. Kann nicht in einem anderen elif-Block verschachtelt werden, kann aber in einem if- oder else-Block verwendet werden.

Lassen Sie es uns anhand eines Beispiels verstehen.

#!/bin/bash
Zahl=5
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
anders
echo $number ist nicht größer als 10
Sei
Echo ——–
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
elif [ $number -eq 10 ]; Dann
echo $number ist gleich 10
anders
echo $number ist kleiner als 10
Sei

Erläuterung:

In diesem Beispiel prüft der erste if-Block, ob die Zahl größer als 10 ist. Wenn nicht, gibt er eine Meldung aus, die angibt, dass die Zahl nicht größer als 10 ist. Der zweite Block mit elif-Anweisungen prüft nacheinander mehrere Bedingungen, bis eine davon wahr ist. Da in diesem Fall der Wert von number 5 ist, lautet die Ausgabe:

if_elif Unterschied

if_elif Unterschied

23) Wie nutzt man eine While-Schleife, um Befehle wiederholt auszuführen?

Bei der Shell-Skripterstellung wird eine While-Schleife verwendet, um eine Reihe von Befehlen wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist. Die Schleife führt die Befehle so lange aus, bis die Bedingung falsch wird.

Hier ist die grundlegende Syntax einer While-Schleife:

while [ Bedingung ]; Tun
# Auszuführende Befehle
Erledigt

Erläuterung:

  1. Die „while“-Schleife beginnt mit dem Schlüsselwort „while“, gefolgt von einer in eckigen Klammern eingeschlossenen Bedingung „[ ]“.
  2. Der Schleifenkörper, der die auszuführenden Befehle enthält, ist in die Schlüsselwörter „do“ und „done“ eingeschlossen.
  3. Die Schleife prüft zunächst die Bedingung. Wenn die Bedingung wahr ist, werden die Befehle im Schleifenkörper ausgeführt. Nachdem der Schleifenkörper ausgeführt wurde, wird die Bedingung erneut überprüft und der Vorgang wiederholt, bis die Bedingung falsch wird.

Beispiel: Wenn wir Zahlen von 1 bis 5 drucken möchten

#!/bin/bash
Zähler=1
while [ $counter -le 5 ]; Tun
Echo-Nummer: $counter
counter=$((counter + 1))
Erledigt

Erläuterung:

  • Die Zählervariable wird auf 1 gesetzt.
  • Die while-Schleife prüft, ob der Wert von counter kleiner oder gleich 5 ist. Solange diese Bedingung erfüllt ist, wird die Schleife weiter ausgeführt.
  • Innerhalb der Schleife wird der aktuelle Wert des Zählers mithilfe von Echo ausgegeben.
  • Der Zähler wird mit dem Ausdruck $((Zähler + 1)) um 1 erhöht.
while-Schleife

while-Schleife

24) Erstellen Sie ein Shell-Skript, das alle leeren Dateien in einem Verzeichnis findet und auflistet.

Shell-Skript, mit dem Sie mithilfe der Befehle „find“ und „stat“ alle leeren Dateien in einem Verzeichnis suchen und auflisten können:

#!/bin/bash
Verzeichnis=$1″
if [ -z $directory ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann
echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei
echo Leere Dateien im $directory:
finde $directory -type f -empty

Erläuterung:

  1. ` #!/bin/bash „: Dies wird als Shebang bezeichnet und weist das Betriebssystem an, die Bash-Shell zum Interpretieren und Ausführen des Skripts zu verwenden.
  2. ` Verzeichnis=$1″ `: Diese Zeile weist der Variablen ` das erste Befehlszeilenargument (bezeichnet mit $1) zu Verzeichnis `.
  3. ` if [ -z $directory ]; Dann `: Diese Zeile startet eine if-Anweisung, die prüft, ob das ` Verzeichnis ` Variable ist leer (-z testet auf eine leere Zeichenfolge).
  4. ` Echo-Nutzung: $0 `: Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung aus, wobei ` 0 $ ` steht für den Namen des Skripts.
  5. ` Ausgang 1 `: Diese Zeile beendet das Skript mit dem Exit-Code ` 1 `, was auf einen Fehler hinweist.
  6. ` Sei `: Diese Zeile markiert das Ende des ` Wenn ` Aussage.
  7. ` Wenn [ ! -d $Verzeichnis ]; Dann `: Dies startet eine weitere if-Anweisung, um zu prüfen, ob das angegebene Verzeichnis existiert (` -D ` testet für ein Verzeichnis).
  8. ` echo Fehler: „$directory“ ist kein gültiges Verzeichnis. `: Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. ` Ausgang 1 `: Beendet das Skript mit dem Exit-Code ` 1 `.
  10. ` Sei `: Markiert das Ende des zweiten ` wenn` Stellungnahme.
  11. ` echo Leere Dateien im $directory: `: Wenn bisher alles gültig ist, gibt diese Zeile eine Meldung aus, die angibt, dass das Skript leere Dateien im angegebenen Verzeichnis auflistet.
  12. ` finde $directory -type f -empty `: Diese Zeile verwendet das ` finden ` Befehl zum Suchen nach leeren Dateien (` -leer `) vom Typ reguläre Dateien (` -Typ f `) im angegebenen Verzeichnis. Anschließend werden diese leeren Dateien aufgelistet.
Leere Dateien finden

Leere Dateien finden

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/ verwendet

25) Was ist der Zweck des Lesebefehls beim Shell-Scripting?

Mit dem Lesebefehl beim Shell-Scripting fragt das Skript Sie nach Informationen. Es ist, als würde Ihnen ein Computer eine Frage stellen und auf Ihre Antwort warten. Dies ist nützlich für Skripte, bei denen Sie etwas eingeben müssen oder wenn das Skript mit Informationen aus Dateien arbeiten muss. Der Lesebefehl hilft dem Skript, anzuhalten und auf Ihre Eingabe zu warten. Anschließend kann es diese Informationen verwenden, um weitere Aufgaben im Skript auszuführen.

Syntax des Lesebefehls:

read variable_name>

Beispiel : Wenn wir den Namen als Eingabe vom Benutzer verwenden möchten, um ihn zu drucken.

#!/bin/bash
echo Bitte geben Sie Ihren Namen ein:
Namen lesen
echo Hallo, $name!

453

lies nam

Zusammenfassend lässt sich sagen, dass der Lesebefehl verwendet wird, um Benutzereingaben oder Daten aus Dateien in Shell-Skripten zu erfassen, wodurch die Skripte interaktiver und vielseitiger werden.

26) Schreiben Sie ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

Hier ist ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

#!/bin/bash
Verzeichnis=$1″
if [ -z $directory ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann

echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei

cd $verzeichnis || Ausgang 1

für Datei in *; Tun
if [ -f $file ]; Dann
newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘)
[ $file != $newname ] && mv $file $newname
Sei
Erledigt

Erläuterung:

  1. #!/bin/bash : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Verzeichnis=$1″ : Diese Zeile weist das erste Befehlszeilenargument dem Variablenverzeichnis zu.
  3. if [ -z $directory ]; Dann : Diese Zeile prüft, ob die Verzeichnisvariable leer ist (kein Argument angegeben, wenn das Skript ausgeführt wird).
  4. Echo-Nutzung: $0 : Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung mit dem Namen des Skripts ($0) aus.
  5. Ausgang 1 : Diese Zeile beendet das Skript mit dem Exit-Code 1, was darauf hinweist, dass ein Fehler aufgetreten ist.
  6. F i: Dies markiert das Ende der ersten if-Anweisung.
  7. Wenn [ ! -d $Verzeichnis ]; Dann : Diese Zeile prüft, ob das angegebene Verzeichnis nicht existiert (-d testet ein Verzeichnis).
  8. echo Fehler: „$directory“ ist kein gültiges Verzeichnis. : Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. Ausgang 1 : Beendet das Skript mit dem Exit-Code 1.
  10. Sei : Markiert das Ende der zweiten if-Anweisung.
  11. cd $verzeichnis || Ausgang 1 : Ändert das aktuelle Arbeitsverzeichnis in das angegebene Verzeichnis. Wenn der Verzeichniswechsel fehlschlägt (z. B. Verzeichnis nicht vorhanden), wird das Skript mit einem Fehlercode beendet.
  12. für Datei in *; Tun: ICH für Datei in *; Tun: löst eine Schleife aus, die alle Elemente im aktuellen Verzeichnis durchläuft (* entspricht allen Dateinamen).
  13. if [ -f $file ]; Dann : Überprüft, ob das aktuelle Schleifeniterationselement eine reguläre Datei ist (-f testet auf eine reguläre Datei).
  14. newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘) : Wandelt den aktuellen Dateinamen ($file) mit dem Befehl tr in Kleinbuchstaben um und speichert das Ergebnis in der Variablen newname.
  15. [ $file != $newname ] && mv $file $newname : Vergleicht den ursprünglichen Dateinamen mit dem neuen Dateinamen in Kleinbuchstaben. Wenn sie unterschiedlich sind, wird die Datei mit dem Befehl mv umbenannt.
  16. Sei : Markiert das Ende der inneren if-Anweisung.
  17. Erledigt : Markiert das Ende der Schleife.

454

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/test verwendet

27) Wie können Sie arithmetische Operationen innerhalb eines Shell-Skripts verwenden?

Arithmetische Operationen können innerhalb eines Shell-Skripts mithilfe verschiedener integrierter Methoden ausgeführt werden. Die Shell bietet Mechanismen für einfache arithmetische Berechnungen mithilfe der arithmetischen Erweiterung wie:

  1. Arithmetische Erweiterung ($((…)))
  2. Verwenden des expr-Befehls
  3. Verwenden des let-Befehls

Hier ist unser Shell-Skript, das alle drei Methoden für arithmetische Operationen erklärt.

#!/bin/bash
num1=10
num2=5

#Arithmetische Erweiterung ($((…)))

Ergebnis=$((num1 + num2))
echo Summe: $result

#Verwenden des expr-Befehls

sum=$(expr $num1 + $num2)
echo Summe: $sum

#Verwenden des let-Befehls

sei sum = num1 + num2
echo Summe: $sum

Erläuterung:

  1. `#!/bin/bash` : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. `num1=10` und ` num2=5` : Diese Zeilen weisen den Variablen ` die Werte 10 und 5 zu num1 ` und ` num2 ` bzw.
  3. `#Arithmetische Erweiterung ($((…)))` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die arithmetische Erweiterung demonstriert.
  4. `result=$((num1 + num2))` : Diese Zeile verwendet eine arithmetische Erweiterung, um die Summe von ` zu berechnen num1 ` und ` num2 ` und speichert das Ergebnis im ` Ergebnis ` variabel.
  5. „echo Summe: $result“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Ergebnis ` variabel.
  6. `#Verwenden des expr-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert Ausdruck ` Befehl für arithmetische Operationen.
  7. `sum=$(expr $num1 + $num2)` : Diese Zeile verwendet das ` Ausdruck ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und speichert das Ergebnis im ` Summe ` variabel. Beachten Sie, dass das ` Ausdruck Der Befehl ` erfordert Leerzeichen um die Operatoren.
  8. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
  9. `#Verwenden des let-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert lassen ` Befehl für arithmetische Operationen.
  10. `Lass Summe = num1 + num2″` : Diese Zeile verwendet das ` lassen ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und weist das Ergebnis dem ` zu Summe ` variabel. Das ` lassen Für den Befehl ` sind keine Leerzeichen um die Operatoren erforderlich.
  11. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
Arithmetik

Arithmetik

28) Erstellen Sie ein Skript, das prüft, ob ein Netzwerkhost erreichbar ist.

Hier ist ein einfaches Shell-Skript, das mithilfe des Ping-Befehls prüft, ob ein Netzwerkhost erreichbar ist:

#!/bin/bash
host=$1″
if [ -z $host ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei
ping -c 4 $host

wenn [ $? -eq 0 ]; Dann
echo $host ist erreichbar.
anders
echo $host ist nicht erreichbar.
Sei

Erläuterung:

  1. Es nimmt einen Hostnamen oder eine IP-Adresse als Argument und prüft, ob das Argument angegeben wird.
  2. Wenn kein Argument angegeben wird, wird eine Nutzungsmeldung angezeigt und der Vorgang beendet.
  3. Es verwendet den Ping-Befehl mit der Option -c 4, um vier ICMP-Echo-Anfragen an den angegebenen Host zu senden.
  4. Nachdem der Ping-Befehl ausgeführt wurde, prüft er den Exit-Status ($?). Wenn der Exit-Status 0 ist, bedeutet dies, dass der Host erreichbar ist und das Skript eine Erfolgsmeldung ausgibt. Andernfalls wird eine Fehlermeldung ausgegeben.

456

Notiz : Wir müssen beim Ausführen des Skripts einen Hostnamen als Argument angeben. Hier haben wir google.com verwendet

29) Schreiben Sie ein Shell-Skript, um das größte Element in einem Array zu finden:

Hier ist ein Shell-Skript, um das größte Element in einem Array zu finden.

#!/bin/bash
# Deklarieren Sie ein Array
array=(3 56 24 89 67)

# Initialisieren Sie eine Variable, um den Maximalwert zu speichern, beginnend mit dem ersten Element

max=${array[0]}

# Durch das Array iterieren

für num in ${array[@]}; Tun

# Vergleichen Sie jedes Element mit dem aktuellen Maximum

if ((num> max)); Dann
max=$num
Sei
Erledigt

# Drucken Sie den Maximalwert aus

echo Das maximale Element im Array ist: $max

Erläuterung:

  1. ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.
  2. ` array=(3 56 24 89 67) `: Das Array wird deklariert und mit Werten initialisiert.
  3. ` max=${array[0]} `: `max` wird mit dem ersten Element des Arrays initialisiert.
  4. ` für num in ${array[@]}; Tun „: Eine „for“-Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.
  5. ` if ((num> max)); Dann „: Eine „if“-Anweisung prüft, ob das aktuelle Element „num“ größer als das aktuelle Maximum „max“ ist.
  6. ` max=$num`: If`num ` ist größer als `max`, `max` wird mit dem Wert von num aktualisiert.
  7. ` Erledigt `: Die `for`-Schleife ist geschlossen.
  8. ` echo Das maximale Element im Array ist: $max `: Abschließend gibt das Skript den im Array gefundenen Maximalwert aus.
461

größte Zahl

30) Schreiben Sie ein Skript, um die Summe der Elemente in einem Array zu berechnen.

#!/bin/bash

# Deklarieren Sie ein Array

array=(1 65 22 19 94)

# Initialisieren Sie eine Variable, um die Summe zu speichern

Summe=0

# Durchlaufen Sie das Array und fügen Sie jedes Element zur Summe hinzu

für num in ${array[@]}; Tun
am=$((am + am))
Erledigt

# Drucken Sie die Summe aus

echo Die Summe der Elemente im Array ist: $sum

Erläuterung:

` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.

` array=(1 65 22 19 94) `: Das Array wird deklariert und mit Werten initialisiert.

` Summe=0 `:` Summe ` wird auf Null initialisiert, um die Summe der Elemente zu speichern.

` für num in ${array[@]}; Tun `: A` für Die Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.

` am=$((am + am)) `: Innerhalb der Schleife jedes Element ` Auf eins ` wird dem ` hinzugefügt Summe ` variabel.

` Erledigt `: Das ` für ` Schleife ist geschlossen.

„echo Die Summe der Elemente im Array ist: $sum“: Schließlich gibt das Skript die Summe aller Elemente im Array aus.

462

Summe der Elemente

Erfahren Sie mehr über Shell-Skripte

Abschluss

Wir alle wissen, dass Shell-Skripte sehr nützlich sind, um die Arbeitsproduktivität zu steigern und auch Zeit zu sparen. In diesem Artikel haben wir es also behandelt 30 sehr nützliche und am meisten betrügerische Beispiele für Shell-Skripte . Wir hoffen, dass diese vollständige Anleitung zum Beispiel für Shell-Skripte Ihnen hilft, alles über die Shell-Skripte zu verstehen.




Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann
echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei
echo Leere Dateien im $directory:
finde $directory -type f -empty

Erläuterung:

  1. ` #!/bin/bash „: Dies wird als Shebang bezeichnet und weist das Betriebssystem an, die Bash-Shell zum Interpretieren und Ausführen des Skripts zu verwenden.
  2. ` Verzeichnis=″ `: Diese Zeile weist der Variablen ` das erste Befehlszeilenargument (bezeichnet mit ) zu Verzeichnis `.
  3. ` if [ -z $directory ]; Dann `: Diese Zeile startet eine if-Anweisung, die prüft, ob das ` Verzeichnis ` Variable ist leer (-z testet auf eine leere Zeichenfolge).
  4. ` Echo-Nutzung:

    Bei allen Linux-Distributionen ist das Shell-Skript wie ein Zauberstab, der den Prozess automatisiert, Benutzern Zeit spart und die Produktivität steigert. Dieses Tutorial zur SOLL-Skripterstellung stellt Ihnen mehr als 25 SOLL-Skripting-Beispiele vor.

    Aber bevor wir zum Thema übergehen Shell-Scripting Beispiele: Lassen Sie uns Shell-Skripte und die tatsächlichen Anwendungsfälle von Shell-Skripten verstehen.

    Was ist Shell-Skript?

    Nun, die Schale ist eine CLI ( Befehlszeileninterpreter ), das in einem Textfenster ausgeführt wird, in dem Benutzer Shell-Befehle verwalten und ausführen können. Andererseits wird der Prozess des Schreibens einer Reihe von Befehlen, die auf einem Linux-System ausgeführt werden sollen. Eine Datei, die solche Anweisungen enthält, wird als Bash-Skript bezeichnet.

    Verwendung von Shell-Skripten

    Im Folgenden sind einige häufige Verwendungszwecke von Shell Script aufgeführt:

    • Aufgabenautomatisierung – Es kann verwendet werden, um sich wiederholende Aufgaben wie regelmäßige Backups und Softwareinstallationsaufgaben zu automatisieren.
    • Anpassung - Man kann Shell-Skripte verwenden, um seine Befehlszeilenumgebung zu entwerfen und seine Aufgabe je nach Bedarf einfach auszuführen.
    • Dokumentenverwaltung - Die Shell-Skripte können auch zum Verwalten und Bearbeiten von Dateien und Verzeichnissen verwendet werden, beispielsweise zum Verschieben, Kopieren, Umbenennen oder Löschen von Dateien.

    Beispiele für Shell-Skripte unter Linux

    1) Was bedeutet das Shebang (#!) am Anfang eines Shell-Skripts?

    Der Mist (#!) am Anfang eines Skripts gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll. Es teilt dem System mit, welche Shell oder welcher Interpreter die Befehle des Skripts interpretieren soll.

    Zum Beispiel: Angenommen, wir haben ein Skript mit dem Namen myscript.sh geschrieben in der Bash-Shell:

    Mist

    Mist

    In diesem Beispiel:

    • Das #!/bin/bash am Anfang des Skripts gibt an, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    • Die Echo-Befehle werden zum Drucken von Nachrichten an das Terminal verwendet.

    2) Wie führt man ein Shell-Skript über die Befehlszeile aus?

    Um ein Shell-Skript über die Befehlszeile auszuführen, müssen wir die folgenden Schritte ausführen:

    • Stellen Sie sicher, dass die Skriptdatei über ausführbare Berechtigungen verfügt chmod-Befehl :
    chmod +x myscript.sh>
    • Führen Sie das Skript unter Verwendung seines Dateinamens aus:
    ./myscript.sh>

    Hier muss ersetzt werden myscrtipt.sh mit Ihrem Skriptnamen.

    3) Schreiben Sie ein Shell-Skript, das techcodeview.com auf dem Terminal ausgibt.

    Erstellen Sie einen Skriptnamen „myscript.sh“ (wir verwenden „ Weil ` Editor, Sie können einen beliebigen Editor auswählen)

    vim myscript.sh>

    #!/bin/bash
    # Dieses Skript druckt techcodeview.com auf dem Terminal
    echo techcodeview.com

    Namen drucken

    Namen drucken

    Wir machen unser Skript mit „chmod +x“ ausführbar, führen es dann mit „./myscipt.sh“ aus und erhalten die gewünschte Ausgabe techcodeview.com.

    4) Erklären Sie den Zweck des Echo-Befehls beim Shell-Scripting.

    Der Echo-Befehl dient der Anzeige von Texten oder Variablen auf dem Terminal. Es wird häufig zum Drucken von Nachrichten, Variablenwerten und zum Generieren von Programmausgaben verwendet.

    434

    Echo-Befehl

    In diesem Beispiel haben wir „echo“ direkt auf dem Terminal ausgeführt, da es innerhalb des Shell-Skripts genauso funktioniert.

    5) Wie kann man einer Variablen in einem Shell-Skript einen Wert zuweisen?

    Variablen werden Werte mit dem Zuweisungsoperator = zugewiesen.

    Zum Beispiel:

    #!/bin/bash
    # Einer Variablen einen Wert zuweisen
    Name=Jayesh
    Alter=21
    echo $name $age

    Erläuterung:

    • Der Namensvariablen wird der Wert Jayesh zugewiesen.
    • Der Altersvariable wird der Wert 21 zugewiesen.
    • echo wird zum Drucken verwendet und `$name` `$age` wird verwendet, um den in den Variablen gespeicherten Wert aufzurufen.

    435

    6) Schreiben Sie ein Shell-Skript, das den Namen eines Benutzers als Eingabe verwendet und ihn begrüßt.

    Erstellen Sie einen Skriptnamen „example.sh“.

    #!/bin/bash
    # Fragen Sie den Benutzer nach seinem Namen
    echo Wie heißt du?
    Namen lesen
    # Begrüßen Sie den Benutzer
    echo Hallo, $name! Freut mich, Sie kennenzulernen.

    Erläuterung:

    • #!/bin/bash: Das ist die Shebang-Zeile. Es weist das System an, den Bash-Interpreter zum Ausführen des Skripts zu verwenden.
    • # Fragen Sie den Benutzer nach seinem Namen: Dies ist ein Kommentar. Es bietet Kontext zum kommenden Code. Kommentare werden vom Interpreter ignoriert.
    • echo Wie heißt du?: Der echo-Befehl wird verwendet, um den Text in doppelten Anführungszeichen auf dem Terminal anzuzeigen.
    • Lesename: Der Lesebefehl wartet auf die Eingabe von Text durch den Benutzer und speichert ihn im Variablennamen.
    • echo Hallo, $name! Freut mich, Sie kennenzulernen.: Diese Zeile verwendet den echo-Befehl, um eine Begrüßungsnachricht zu drucken, die den Wert der Namensvariablen enthält, der aus der Benutzereingabe erfasst wurde.

    436

    7) Wie fügt man einem Shell-Skript Kommentare hinzu?

    Kommentare im Shell-Scripting werden verwendet, um Erklärungen oder Kontext zum Code bereitzustellen. Sie werden vom Interpreter ignoriert und sind nur für Menschen gedacht, die das Skript lesen. Mit dem #-Symbol können Sie Kommentare hinzufügen.

    #!/bin/bash
    # Dies ist ein Kommentar, der den Zweck des Skripts erläutert
    echo gfg

    8) Erstellen Sie ein Shell-Skript, das prüft, ob eine Datei im aktuellen Verzeichnis vorhanden ist.

    Hier ist ein Skript, das prüft, ob eine Datei namens example.txt im aktuellen Verzeichnis vorhanden ist:

    #!/bin/bash
    file=example.txt
    # Überprüfen Sie, ob die Datei vorhanden ist
    if [ -e $file ]; Dann
    echo Datei existiert: $file
    anders
    echo Datei nicht gefunden: $file
    Sei

    Erläuterung:

    1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
    2. file=example.txt: Diese Zeile definiert die Variablendatei und weist ihr den Wert example.txt zu. Sie können dies durch den Namen der Datei ersetzen, nach der Sie suchen möchten.
    3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Die Bedingung [ -e $file ] prüft, ob die durch den Wert der Dateivariablen angegebene Datei existiert. Das Flag -e wird verwendet, um zu prüfen, ob eine Datei vorhanden ist.
    4. echo Datei existiert: $datei: Wenn die Bedingung wahr ist (d. h. die Datei existiert), gibt diese Zeile eine Meldung aus, die angibt, dass die Datei existiert, zusammen mit dem Namen der Datei.
    5. else: Wenn die Bedingung falsch ist (d. h. die Datei existiert nicht), führt das Skript den Code unter dem else-Zweig aus.
    6. echo Datei nicht gefunden: $datei: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde, zusammen mit dem Namen der Datei.
    7. fi: Diese Zeile markiert das Ende der if-Anweisung.
    Datei wird gefunden

    Datei wird gefunden

    9) Was ist der Unterschied zwischen einfachen Anführungszeichen (‘) und doppelten Anführungszeichen () beim Shell-Scripting?

    Einfache Anführungszeichen (‘) und doppelte Anführungszeichen () werden zum Einschließen von Zeichenfolgen in Shell-Skripten verwendet, haben jedoch unterschiedliche Verhaltensweisen:

    • Einfache Anführungszeichen: Alles zwischen einfachen Anführungszeichen wird als Literalzeichenfolge behandelt. Variablennamen und die meisten Sonderzeichen werden nicht erweitert.
    • Doppelte Anführungszeichen: Variablen und bestimmte Sonderzeichen in doppelten Anführungszeichen werden erweitert. Der Inhalt unterliegt der Variablenersetzung und der Befehlsersetzung.

    #!/bin/bash

    abcd=Hallo
    echo ‚$abcd‘ # Ausgabe: $abcd
    echo $abcd # Ausgabe: Hallo

    10) Wie können Sie Befehlszeilenargumente in einem Shell-Skript verwenden?

    Kommandozeilenargumente sind Werte, die einem Skript bei seiner Ausführung bereitgestellt werden. Auf sie kann innerhalb des Skripts über spezielle Variablen wie $1, $2 usw. zugegriffen werden, wobei $1 das erste Argument, $2 das zweite Argument usw. darstellt.

    Zum Beispiel: Wenn unser Skriptname in „example.sh“ steht

    #!/bin/bash

    echo Skriptname: $0
    echo Erstes Argument: $1
    echo Zweites Argument: $2

    Wenn wir das Skript mit „.example.sh hello_1 hello_2“ ausführen, wird Folgendes ausgegeben:

    CLI-Argumente

    CLI-Argumente

    11) Wie verwenden Sie die for-Schleife, um eine Liste von Werten zu durchlaufen?

    Erstellen Sie einen Skriptnamen „example.sh“.

    #!/bin/bash

    Früchte = (Apfel, Banane, Kirsche, Dattel)
    für Obst in ${fruits[@]}; Tun
    echo Aktuelle Frucht: $fruit
    Erledigt

    Erläuterung:

    Die Zeile „fruits=“ erstellt ein Array mit dem Namen „Früchte“ mit vier Elementen: Apfel, Banane, Kirsche und Dattel.

    • für Obst in ${fruits[@]}; do: Diese Zeile startet eine for-Schleife. Hier ist, was jeder Teil bedeutet:
    • für Obst: Dies deklariert eine Schleifenvariable namens Obst. In jeder Iteration der Schleife speichert Fruit den Wert des aktuellen Elements aus dem Fruit-Array.
    • ${fruits[@]}: Dies ist eine Array-Erweiterung, die alle Elemente aus dem Fruit-Array übernimmt. Die ${…}-Syntax stellt sicher, dass jedes Element als separates Element behandelt wird.
    • do: Dieses Schlüsselwort markiert den Anfang des Schleifenkörpers.
    • echo Aktuelle Frucht: $fruit: Innerhalb der Schleife verwendet diese Zeile den Echo-Befehl, um den aktuellen Wert der Schleifenvariablen Frucht anzuzeigen. Für jede Frucht im Array wird eine Meldung wie Aktuelle Frucht: Apfel ausgegeben.
    • done: Dieses Schlüsselwort markiert das Ende des Schleifenkörpers. Es teilt dem Skript mit, dass die Schleife beendet ist.
    for-Schleife

    for-Schleife

    12) Schreiben Sie ein Shell-Skript, das mithilfe einer Schleife die Summe der ganzen Zahlen von 1 bis N berechnet.

    Erstellen Sie einen Skriptnamen „example.sh“.

    #!/bin/bash

    echo Geben Sie eine Zahl (N) ein:
    lies N
    Summe=0
    for (( i=1; i<=$N; i++ )); Tun
    sum=$((sum + i))
    Erledigt
    echo Die Summe der ganzen Zahlen von 1 bis $N ist: $sum

    Erläuterung:
    Das Skript fordert Sie zunächst dazu auf, mithilfe von „read“ eine Zahl (N) einzugeben. Diese Zahl bestimmt, wie oft die Schleife ausgeführt wird.

    1. Die Variablensumme wird auf 0 initialisiert. Diese Variable verfolgt die Summe der Ganzzahlen.
    2. Die for-Schleife beginnt mit for (( i=1; i<=$N; i++ )). Diese Schleifenstruktur wird verwendet, um eine Reihe von Aktionen eine bestimmte Anzahl von Malen zu wiederholen, in diesem Fall von 1 bis zum Wert N.
    3. Innerhalb der Schleife passieren folgende Dinge:
      • i=1 setzt die Schleifenvariable i zu Beginn jeder Iteration auf 1.
      • Die Schleifenbedingung i<=$N prüft, ob i immer noch kleiner oder gleich der angegebenen Zahl N ist.
      • Wenn die Bedingung wahr ist, wird der Schleifenkörper ausgeführt.
      • sum=$((sum + i)) berechnet den neuen Wert von sum, indem der aktuelle Wert von i dazu addiert wird. Dadurch werden die ganzen Zahlen von 1 bis zum aktuellen i-Wert addiert.
    4. Nach jeder Iteration erhöht i++ den Wert von i um 1.
    5. Die Schleife läuft weiter, bis die Bedingung i<=$N falsch wird (wenn i größer als N wird).
    6. Sobald die Schleife beendet ist, zeigt das Skript die Summe der ganzen Zahlen von 1 bis zur eingegebenen Zahl N an.

    439

    13) Erstellen Sie ein Skript, das nach einem bestimmten Wort in einer Datei sucht und dessen Vorkommen zählt.

    Erstellen Sie einen Skriptnamen „word_count.sh“.

    #!/bin/bash

    echo Geben Sie das Wort ein, nach dem gesucht werden soll:
    Zielwort lesen
    echo Geben Sie den Dateinamen ein:
    Dateinamen lesen
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Das Wort „$target_word“ kommt $count mal in „$filename“ vor.

    Erläuterung:

    • echo Geben Sie das zu suchende Wort ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, ein Wort einzugeben, nach dem er in einer Datei suchen möchte.
    • read target_word: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens target_word.
    • echo Geben Sie den Dateinamen ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, den Namen der Datei einzugeben, in der er suchen möchte.
    • Dateinamen lesen: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens Dateiname.
    • count=$(grep -o -w $target_word $filename | wc -l): Diese Zeile erledigt die Hauptarbeit des Skripts. Lassen Sie es uns weiter aufschlüsseln:
      • grep -o -w $target_word $filename: Dieser Teil des Befehls sucht nach Vorkommen des target_word im angegebenen Dateinamen. Die Optionen -o und -w stellen sicher, dass nur Ganzwortübereinstimmungen gezählt werden.
      • |: Dies ist eine Pipe, die die Ausgabe des vorherigen Befehls übernimmt und als Eingabe an den nächsten Befehl sendet.
      • wc -l: Dieser Teil des Befehls verwendet den Befehl wc, um die Anzahl der Zeilen in der Eingabe zu zählen. Die Option -l zählt gezielt die Zeilen.
      • Der gesamte Befehl berechnet die Anzahl der Vorkommen des Zielworts in der Datei und weist diese Anzahl der Variablen coun zu

    441

    14) Erklären Sie die Unterschiede zwischen Standardausgabe (stdout) und Standardfehler (stderr).

    Der Hauptunterschied zwischen Standardausgabe (stdout) und Standardfehler (stderr) ist wie folgt:

    • Standardausgabe (stdout): Dies ist der Standardausgabestream, in den die reguläre Ausgabe eines Befehls geht. Es wird standardmäßig auf dem Terminal angezeigt. Sie können es mit> in eine Datei umleiten.
    • Standardfehler (stderr): Dies ist der Ausgabestream für Fehlermeldungen und Warnungen. Es wird standardmäßig auch auf dem Terminal angezeigt. Sie können es mit 2> in eine Datei umleiten.

    15) Erklären Sie das Konzept bedingter Anweisungen im Shell-Scripting.

    Bedingte Anweisungen im Shell-Scripting ermöglichen es uns, Entscheidungen zu treffen und den Ablauf unseres Skripts auf der Grundlage bestimmter Bedingungen zu steuern. Sie ermöglichen unserem Skript, unterschiedliche Befehlssätze auszuführen, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist. Die primären bedingten Anweisungen beim Shell-Scripting sind die if-Anweisung, die elif-Anweisung (optional) und die else-Anweisung (optional).

    Hier ist die Grundstruktur einer bedingten Anweisung im Shell-Scripting:

    if [ Bedingung ]; Dann
    # Befehle, die ausgeführt werden sollen, wenn die Bedingung wahr ist
    elif [ another_condition ]; Dann
    # Befehle, die ausgeführt werden sollen, wenn another_condition wahr ist (optional)
    anders
    # Befehle, die ausgeführt werden sollen, wenn keine der Bedingungen wahr ist (optional)
    Sei

    Erläuterung:

    • [ Bedingung ] = Befehl, der die Bedingung auswertet und einen Exit-Status „wahr“ (0) oder „falsch“ (ungleich Null) zurückgibt.
    • then = Es handelt sich um ein Schlüsselwort, das angibt, dass die darauf folgenden Befehle ausgeführt werden, wenn die Bedingung „true“ ergibt.
    • elif = (Abkürzung für else if) Dies ist ein Abschnitt, der es uns ermöglicht, zusätzliche zu überprüfende Bedingungen anzugeben.
    • else = es ist ein Abschnitt, der Befehle enthält, die ausgeführt werden, wenn keine der Bedingungen wahr ist.
    • fi = Es ist ein Schlüsselwort, das das Ende des bedingten Blocks markiert.

    16) Wie liest man Zeilen aus einer Datei in einem Shell-Skript?

    Zu Zeilen lesen Aus einer Datei innerhalb eines Shell-Skripts können wir verschiedene Methoden verwenden, aber ein gängiger Ansatz ist die Verwendung einer While-Schleife in Kombination mit dem Lesebefehl. So können wir es machen:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Überprüfen Sie, ob die Datei vorhanden ist
    if [ -e $file ]; Dann
    while IFS= read -r line; Tun
    echo Zeile gelesen: $line
    # Fügen Sie hier Ihre Verarbeitungslogik hinzu
    erledigt <$file
    anders
    echo Datei nicht gefunden: $file
    Sei

    Erläuterung:

    1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
    2. file=/home/jayeshkumar/jayesh.txt: Diese Zeile definiert die Variablendatei und weist den vollständigen Pfad zur Datei jayesh.txt im Verzeichnis /home/jayeshkumar zu. Ändern Sie diesen Pfad so, dass er mit dem tatsächlichen Pfad der Datei übereinstimmt, die Sie lesen möchten.
    3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Es prüft, ob die durch die Variable $file angegebene Datei existiert. Das Flag -e prüft, ob eine Datei vorhanden ist.
    4. while IFS= read -r line; do: Diese Zeile initiiert eine While-Schleife, die Zeilen aus der Datei liest.
      • IFS=: Das IFS (Internal Field Separator) wird auf einen leeren Wert gesetzt, um führende und nachfolgende Leerzeichen beizubehalten.
      • read -r line: Dies liest die aktuelle Zeile aus der Datei und speichert sie in der Variablen line.
    5. echo Zeile gelesen: $line: Diese Zeile gibt den Inhalt der Zeile aus, die aus der Datei gelesen wurde. Die Variable $line enthält den Inhalt der aktuellen Zeile.
    6. # Fügen Sie hier Ihre Verarbeitungslogik hinzu: Dies ist ein Platzhalterkommentar, in dem Sie Ihre eigene Logik zur Verarbeitung jeder Zeile hinzufügen können. Beispielsweise können Sie die Zeile analysieren, Informationen extrahieren oder bestimmte Aktionen basierend auf dem Inhalt ausführen.
    7. done <$file: Dies markiert das Ende der while-Schleife. Das < $file leitet den Inhalt der Datei um, damit er von der Schleife gelesen werden kann.
    8. else: Wenn die Datei nicht existiert (die Bedingung in der if-Anweisung ist falsch), führt das Skript den Code unter dem else-Zweig aus.
    9. echo Datei nicht gefunden: $file: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde.
    10. fi: Diese Zeile markiert das Ende der if-Anweisung.
    Datei lesen

    Datei lesen

    Hier haben wir „“ verwendet pwd ` Befehl, um den Pfad des aktuellen Verzeichnisses abzurufen.

    17) Schreiben Sie eine Funktion in ein Shell-Skript, die die Fakultät einer bestimmten Zahl berechnet.

    Hier ist das Skript, dasBerechnen Sie die Fakultäteiner gegebenen Zahl.

    #!/bin/bash
    # Definieren Sie eine Funktion zur Berechnung der Fakultät
    berechne_faktorial() {
    num=$1
    Tatsache=1
    for ((i=1; i<=num; i++)); Tun
    fact=$((fact * i))
    Erledigt
    echo $fact
    }
    # Fordern Sie den Benutzer auf, eine Nummer einzugeben
    echo Geben Sie eine Zahl ein:
    lese input_num
    # Rufen Sie die Funktion „calcure_factorial“ mit der Eingabenummer auf
    factial_result=$(calculate_factorial $input_num)
    # Zeigen Sie das faktorielle Ergebnis an
    echo Factorial von $input_num ist: $factorial_result

    Erläuterung:

    1. Das Skript beginnt mit der Shebang-Zeile #!/bin/bash, um den Interpreter anzugeben.
    2. berechne_faktorial() ist als Funktion definiert. Es benötigt ein Argument, num, das die Zahl ist, für die die Fakultät berechnet werden muss.
    3. Innerhalb der Funktion wird fact auf 1 initialisiert. Diese Variable speichert das Fakultätsergebnis.
    4. Die for-Schleife iteriert von 1 bis zur angegebenen Zahl (num). In jeder Iteration multipliziert es den aktuellen Wert von fact mit dem Schleifenindex i.
    5. Nach Abschluss der Schleife enthält die Faktenvariable die berechnete Fakultät.
    6. Das Skript fordert den Benutzer mit „read“ zur Eingabe einer Zahl auf.
    7. Die Funktion „calcure_factorial“ wird mit der vom Benutzer angegebenen Zahl aufgerufen und das Ergebnis wird in der Variablen „factorial_result“ gespeichert.
    8. Abschließend zeigt das Skript das berechnete Fakultätsergebnis an.
    Fakultät

    Fakultät

    18) Wie gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um?

    In einem Shell-Skript können Sie Signale wie Strg+C (auch bekannt als SIGINT) mit dem Trap-Befehl verarbeiten. Strg+C generiert ein SIGINT-Signal, wenn der Benutzer es drückt, um das laufende Skript oder Programm zu unterbrechen. Mithilfe des Trap-Befehls können Sie Aktionen festlegen, die ausgeführt werden sollen, wenn ein bestimmtes Signal empfangen wird. So gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um:

    #!/bin/bash
    Aufräumen() {
    echo Skript unterbrochen. Bereinigung wird durchgeführt…
    # Fügen Sie hier Ihre Bereinigungsaktionen hinzu
    Ausgang 1
    }
    # Richten Sie eine Falle ein, um die Bereinigungsfunktion aufzurufen, wenn Strg+C (SIGINT) empfangen wird
    Fallenbereinigung SIGINT
    # Rest Ihres Skripts
    echo Laufen…
    Schlaf 10
    echo Fertig.

    Der Umgang mit Signalen ist wichtig, um Skripte robust zu machen und sicherzustellen, dass sie unerwartete Unterbrechungen ordnungsgemäß verarbeiten. Sie können die Bereinigungsfunktion an Ihre spezifischen Anforderungen anpassen, z. B. Dateien schließen, Prozesse stoppen oder Informationen protokollieren, bevor das Skript beendet wird.

    Erläuterung:

    1. #!/bin/bash: Diese Shebang-Zeile gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll.
    2. cleanup() { … }: Dies definiert eine Funktion namens cleanup. In diese Funktion können Sie alle Aktionen einschließen, die ausgeführt werden müssen, wenn das Skript unterbrochen wird, z. B. das Schließen von Dateien, das Freigeben von Ressourcen oder das Durchführen anderer Bereinigungsaufgaben.
    3. trap cleanup SIGINT: Der trap-Befehl wird zum Einrichten eines Signalhandlers verwendet. In diesem Fall wird angegeben, dass die Bereinigungsfunktion ausgeführt werden soll, wenn das SIGINT-Signal (Strg+C) empfangen wird.
    4. echo Running…, sleep 10, echo Finished.: Dies sind nur Beispielbefehle, um die Ausführung eines Skripts zu simulieren.

    446

    19) Erstellen Sie ein Skript, das nach doppelten Zeilen in einer Textdatei sucht und diese entfernt.

    Hier ist unser Linux-Skript, in dem wir doppelte Zeilen aus einer Textdatei entfernen.

    #!/bin/bash
    input_file=input.txt
    Ausgabedatei=Ausgabe.txt
    $input_file | sortieren uniq> $output_file
    echo Doppelte Zeilen erfolgreich entfernt.

    Erläuterung:

    1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    2. Die Variable input_file wird auf den Namen der Eingabedatei gesetzt, die doppelte Zeilen enthält (ändern Sie diesen in Ihren tatsächlichen Namen der Eingabedatei).
    3. Die Variable „output_file“ wird auf den Namen der Ausgabedatei gesetzt, aus der die Duplikate entfernt werden (ändern Sie diesen in den gewünschten Namen der Ausgabedatei).
    4. Das Skript verwendet den Sortierbefehl, um die Zeilen in der Eingabedatei zu sortieren. Durch das Sortieren der Zeilen wird sichergestellt, dass doppelte Zeilen gruppiert werden.
    5. Die sortierten Zeilen werden dann durch den Befehl uniq geleitet, der aufeinanderfolgende doppelte Zeilen entfernt. Die Ausgabe dieses Prozesses wird in die Ausgabedatei umgeleitet.
    6. Nachdem die Duplikate entfernt wurden, gibt das Skript eine Erfolgsmeldung aus.
    Entfernen doppelter Zeilen

    Entfernen doppelter Zeilen

    Hier verwenden wir „ Katze ` um den Text in der Textdatei anzuzeigen.

    20) Schreiben Sie ein Skript, das ein sicheres Zufallspasswort generiert.

    Hier ist unser Skript zum Generieren eines sicheren Zufallspassworts.

    #!/bin/bash
    # Funktion zum Generieren eines zufälligen Passworts
    generiere Passwort() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Rufen Sie die Funktion auf und speichern Sie das generierte Passwort
    passwort=$(generate_password)
    echo Generiertes Passwort: $password

    Hinweis: Der Benutzer kann die Länge seines Passworts entsprechend ändern, indem er die Zahl „12“ ersetzt.

    Erläuterung:

    1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass es mit der Bash-Shell interpretiert werden soll.
    2. Die Funktion „generate_password“ ist so definiert, dass sie ein zufälliges Passwort generiert. So funktioniert das:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • falten -w 12 unterteilt die gefilterten Zufallsdaten in Zeilen mit einer Breite von jeweils 12 Zeichen.
      • head -n 1 wählt die erste Zeile aus und gibt uns effektiv eine zufällige Folge von Zeichen der Länge 12.
    3. Der Variable „password“ wird das Ergebnis des Aufrufs der Funktion „generate_password“ zugewiesen.
    4. Abschließend wird das generierte Passwort mittels Echo angezeigt.

    448

    21) Schreiben Sie ein Shell-Skript, das die Gesamtgröße aller Dateien in einem Verzeichnis berechnet.

    Hier ist ein Shell-Skript zur Berechnung der Gesamtgröße aller Dateien in einem Verzeichnis.

    #!/bin/bash
    Verzeichnis=/Pfad/zu/Ihrem/Verzeichnis
    total_size=$(du -csh $directory | grep total | awk ‚{print $1}‘)
    echo Gesamtgröße der Dateien in $directory: $total_size

    Erläuterung:

    1. Das Skript beginnt mit dem Befehl #!/bin/bash, der darauf hinweist, dass es mithilfe der Bash-Shell interpretiert werden soll.
    2. Die Verzeichnisvariable wird auf den Pfad des Verzeichnisses gesetzt, für das Sie die Gesamtdateigröße berechnen möchten. Ersetzen Sie /path/to/your/directory durch den tatsächlichen Pfad.
    3. Der Befehl du wird verwendet, um die Dateispeichernutzung abzuschätzen. Die verwendeten Optionen sind:
      • -c: Erzeuge eine Gesamtsumme.
      • -s: Zeigt nur die Gesamtgröße des angegebenen Verzeichnisses an.
      • -h: Druckgrößen in einem für Menschen lesbaren Format (z. B. KB, MB, GB).
    4. Die Ausgabe von du wird an grep total weitergeleitet, um die Zeile herauszufiltern, die die Gesamtgröße enthält.
    5. awk „{print $1}“ wird verwendet, um das erste Feld (Gesamtgröße) aus der Zeile zu extrahieren.
    6. Die berechnete Gesamtgröße wird in der Variablen total_size gespeichert.
    7. Abschließend zeigt das Skript mithilfe von Echo die Gesamtgröße an.
    Gesamtgröße der Dateien

    Gesamtgröße der Dateien

    Hier haben wir „“ verwendet pwd ` Befehl, um den aktuellen Verzeichnispfad anzuzeigen.

    22) Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting.

    Besonderheit `if`Staiftement `elif`-Erklärung
    Zweck Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting. Stellt alternative Bedingungen bereit, um zu überprüfen, ob die anfängliche If-Bedingung falsch ist.
    Verwendung Wird für den Anfangszustand verwendet. Wird nach der anfänglichen if-Bedingung verwendet, um zusätzliche Bedingungen zu überprüfen.
    Anzahl der Blöcke Kann nur einen if-Block haben. Kann mehrere elif-Blöcke haben, aber nur einen else-Block (optional).
    Ausführung Führt den mit der if-Anweisung verknüpften Codeblock aus, wenn die Bedingung wahr ist. Wenn die Bedingung falsch ist, wird der else-Block (falls vorhanden) ausgeführt (optional). Überprüft jede Elif-Bedingung der Reihe nach. Wenn eine elif-Bedingung wahr ist, wird der entsprechende Codeblock ausgeführt und das Skript verlässt den gesamten bedingten Block. Wenn keine der elif-Bedingungen wahr ist, wird der else-Block (falls vorhanden) ausgeführt.
    Verschachtelte Strukturen Kann in anderen if-, elif- oder else-Blöcken verschachtelt werden. Kann nicht in einem anderen elif-Block verschachtelt werden, kann aber in einem if- oder else-Block verwendet werden.

    Lassen Sie es uns anhand eines Beispiels verstehen.

    #!/bin/bash
    Zahl=5
    if [ $number -gt 10 ]; Dann
    echo $number ist größer als 10
    anders
    echo $number ist nicht größer als 10
    Sei
    Echo ——–
    if [ $number -gt 10 ]; Dann
    echo $number ist größer als 10
    elif [ $number -eq 10 ]; Dann
    echo $number ist gleich 10
    anders
    echo $number ist kleiner als 10
    Sei

    Erläuterung:

    In diesem Beispiel prüft der erste if-Block, ob die Zahl größer als 10 ist. Wenn nicht, gibt er eine Meldung aus, die angibt, dass die Zahl nicht größer als 10 ist. Der zweite Block mit elif-Anweisungen prüft nacheinander mehrere Bedingungen, bis eine davon wahr ist. Da in diesem Fall der Wert von number 5 ist, lautet die Ausgabe:

    if_elif Unterschied

    if_elif Unterschied

    23) Wie nutzt man eine While-Schleife, um Befehle wiederholt auszuführen?

    Bei der Shell-Skripterstellung wird eine While-Schleife verwendet, um eine Reihe von Befehlen wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist. Die Schleife führt die Befehle so lange aus, bis die Bedingung falsch wird.

    Hier ist die grundlegende Syntax einer While-Schleife:

    while [ Bedingung ]; Tun
    # Auszuführende Befehle
    Erledigt

    Erläuterung:

    1. Die „while“-Schleife beginnt mit dem Schlüsselwort „while“, gefolgt von einer in eckigen Klammern eingeschlossenen Bedingung „[ ]“.
    2. Der Schleifenkörper, der die auszuführenden Befehle enthält, ist in die Schlüsselwörter „do“ und „done“ eingeschlossen.
    3. Die Schleife prüft zunächst die Bedingung. Wenn die Bedingung wahr ist, werden die Befehle im Schleifenkörper ausgeführt. Nachdem der Schleifenkörper ausgeführt wurde, wird die Bedingung erneut überprüft und der Vorgang wiederholt, bis die Bedingung falsch wird.

    Beispiel: Wenn wir Zahlen von 1 bis 5 drucken möchten

    #!/bin/bash
    Zähler=1
    while [ $counter -le 5 ]; Tun
    Echo-Nummer: $counter
    counter=$((counter + 1))
    Erledigt

    Erläuterung:

    • Die Zählervariable wird auf 1 gesetzt.
    • Die while-Schleife prüft, ob der Wert von counter kleiner oder gleich 5 ist. Solange diese Bedingung erfüllt ist, wird die Schleife weiter ausgeführt.
    • Innerhalb der Schleife wird der aktuelle Wert des Zählers mithilfe von Echo ausgegeben.
    • Der Zähler wird mit dem Ausdruck $((Zähler + 1)) um 1 erhöht.
    while-Schleife

    while-Schleife

    24) Erstellen Sie ein Shell-Skript, das alle leeren Dateien in einem Verzeichnis findet und auflistet.

    Shell-Skript, mit dem Sie mithilfe der Befehle „find“ und „stat“ alle leeren Dateien in einem Verzeichnis suchen und auflisten können:

    #!/bin/bash
    Verzeichnis=$1″
    if [ -z $directory ]; Dann
    Echo-Nutzung: $0
    Ausgang 1
    Sei

    Wenn [ ! -d $Verzeichnis ]; Dann
    echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
    Ausgang 1
    Sei
    echo Leere Dateien im $directory:
    finde $directory -type f -empty

    Erläuterung:

    1. ` #!/bin/bash „: Dies wird als Shebang bezeichnet und weist das Betriebssystem an, die Bash-Shell zum Interpretieren und Ausführen des Skripts zu verwenden.
    2. ` Verzeichnis=$1″ `: Diese Zeile weist der Variablen ` das erste Befehlszeilenargument (bezeichnet mit $1) zu Verzeichnis `.
    3. ` if [ -z $directory ]; Dann `: Diese Zeile startet eine if-Anweisung, die prüft, ob das ` Verzeichnis ` Variable ist leer (-z testet auf eine leere Zeichenfolge).
    4. ` Echo-Nutzung: $0 `: Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung aus, wobei ` 0 $ ` steht für den Namen des Skripts.
    5. ` Ausgang 1 `: Diese Zeile beendet das Skript mit dem Exit-Code ` 1 `, was auf einen Fehler hinweist.
    6. ` Sei `: Diese Zeile markiert das Ende des ` Wenn ` Aussage.
    7. ` Wenn [ ! -d $Verzeichnis ]; Dann `: Dies startet eine weitere if-Anweisung, um zu prüfen, ob das angegebene Verzeichnis existiert (` -D ` testet für ein Verzeichnis).
    8. ` echo Fehler: „$directory“ ist kein gültiges Verzeichnis. `: Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
    9. ` Ausgang 1 `: Beendet das Skript mit dem Exit-Code ` 1 `.
    10. ` Sei `: Markiert das Ende des zweiten ` wenn` Stellungnahme.
    11. ` echo Leere Dateien im $directory: `: Wenn bisher alles gültig ist, gibt diese Zeile eine Meldung aus, die angibt, dass das Skript leere Dateien im angegebenen Verzeichnis auflistet.
    12. ` finde $directory -type f -empty `: Diese Zeile verwendet das ` finden ` Befehl zum Suchen nach leeren Dateien (` -leer `) vom Typ reguläre Dateien (` -Typ f `) im angegebenen Verzeichnis. Anschließend werden diese leeren Dateien aufgelistet.
    Leere Dateien finden

    Leere Dateien finden

    Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/ verwendet

    25) Was ist der Zweck des Lesebefehls beim Shell-Scripting?

    Mit dem Lesebefehl beim Shell-Scripting fragt das Skript Sie nach Informationen. Es ist, als würde Ihnen ein Computer eine Frage stellen und auf Ihre Antwort warten. Dies ist nützlich für Skripte, bei denen Sie etwas eingeben müssen oder wenn das Skript mit Informationen aus Dateien arbeiten muss. Der Lesebefehl hilft dem Skript, anzuhalten und auf Ihre Eingabe zu warten. Anschließend kann es diese Informationen verwenden, um weitere Aufgaben im Skript auszuführen.

    Syntax des Lesebefehls:

    read variable_name>

    Beispiel : Wenn wir den Namen als Eingabe vom Benutzer verwenden möchten, um ihn zu drucken.

    #!/bin/bash
    echo Bitte geben Sie Ihren Namen ein:
    Namen lesen
    echo Hallo, $name!

    453

    lies nam

    Zusammenfassend lässt sich sagen, dass der Lesebefehl verwendet wird, um Benutzereingaben oder Daten aus Dateien in Shell-Skripten zu erfassen, wodurch die Skripte interaktiver und vielseitiger werden.

    26) Schreiben Sie ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

    Hier ist ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

    #!/bin/bash
    Verzeichnis=$1″
    if [ -z $directory ]; Dann
    Echo-Nutzung: $0
    Ausgang 1
    Sei

    Wenn [ ! -d $Verzeichnis ]; Dann

    echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
    Ausgang 1
    Sei

    cd $verzeichnis || Ausgang 1

    für Datei in *; Tun
    if [ -f $file ]; Dann
    newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘)
    [ $file != $newname ] && mv $file $newname
    Sei
    Erledigt

    Erläuterung:

    1. #!/bin/bash : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    2. Verzeichnis=$1″ : Diese Zeile weist das erste Befehlszeilenargument dem Variablenverzeichnis zu.
    3. if [ -z $directory ]; Dann : Diese Zeile prüft, ob die Verzeichnisvariable leer ist (kein Argument angegeben, wenn das Skript ausgeführt wird).
    4. Echo-Nutzung: $0 : Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung mit dem Namen des Skripts ($0) aus.
    5. Ausgang 1 : Diese Zeile beendet das Skript mit dem Exit-Code 1, was darauf hinweist, dass ein Fehler aufgetreten ist.
    6. F i: Dies markiert das Ende der ersten if-Anweisung.
    7. Wenn [ ! -d $Verzeichnis ]; Dann : Diese Zeile prüft, ob das angegebene Verzeichnis nicht existiert (-d testet ein Verzeichnis).
    8. echo Fehler: „$directory“ ist kein gültiges Verzeichnis. : Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
    9. Ausgang 1 : Beendet das Skript mit dem Exit-Code 1.
    10. Sei : Markiert das Ende der zweiten if-Anweisung.
    11. cd $verzeichnis || Ausgang 1 : Ändert das aktuelle Arbeitsverzeichnis in das angegebene Verzeichnis. Wenn der Verzeichniswechsel fehlschlägt (z. B. Verzeichnis nicht vorhanden), wird das Skript mit einem Fehlercode beendet.
    12. für Datei in *; Tun: ICH für Datei in *; Tun: löst eine Schleife aus, die alle Elemente im aktuellen Verzeichnis durchläuft (* entspricht allen Dateinamen).
    13. if [ -f $file ]; Dann : Überprüft, ob das aktuelle Schleifeniterationselement eine reguläre Datei ist (-f testet auf eine reguläre Datei).
    14. newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘) : Wandelt den aktuellen Dateinamen ($file) mit dem Befehl tr in Kleinbuchstaben um und speichert das Ergebnis in der Variablen newname.
    15. [ $file != $newname ] && mv $file $newname : Vergleicht den ursprünglichen Dateinamen mit dem neuen Dateinamen in Kleinbuchstaben. Wenn sie unterschiedlich sind, wird die Datei mit dem Befehl mv umbenannt.
    16. Sei : Markiert das Ende der inneren if-Anweisung.
    17. Erledigt : Markiert das Ende der Schleife.

    454

    Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/test verwendet

    27) Wie können Sie arithmetische Operationen innerhalb eines Shell-Skripts verwenden?

    Arithmetische Operationen können innerhalb eines Shell-Skripts mithilfe verschiedener integrierter Methoden ausgeführt werden. Die Shell bietet Mechanismen für einfache arithmetische Berechnungen mithilfe der arithmetischen Erweiterung wie:

    1. Arithmetische Erweiterung ($((…)))
    2. Verwenden des expr-Befehls
    3. Verwenden des let-Befehls

    Hier ist unser Shell-Skript, das alle drei Methoden für arithmetische Operationen erklärt.

    #!/bin/bash
    num1=10
    num2=5

    #Arithmetische Erweiterung ($((…)))

    Ergebnis=$((num1 + num2))
    echo Summe: $result

    #Verwenden des expr-Befehls

    sum=$(expr $num1 + $num2)
    echo Summe: $sum

    #Verwenden des let-Befehls

    sei sum = num1 + num2
    echo Summe: $sum

    Erläuterung:

    1. `#!/bin/bash` : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    2. `num1=10` und ` num2=5` : Diese Zeilen weisen den Variablen ` die Werte 10 und 5 zu num1 ` und ` num2 ` bzw.
    3. `#Arithmetische Erweiterung ($((…)))` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die arithmetische Erweiterung demonstriert.
    4. `result=$((num1 + num2))` : Diese Zeile verwendet eine arithmetische Erweiterung, um die Summe von ` zu berechnen num1 ` und ` num2 ` und speichert das Ergebnis im ` Ergebnis ` variabel.
    5. „echo Summe: $result“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Ergebnis ` variabel.
    6. `#Verwenden des expr-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert Ausdruck ` Befehl für arithmetische Operationen.
    7. `sum=$(expr $num1 + $num2)` : Diese Zeile verwendet das ` Ausdruck ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und speichert das Ergebnis im ` Summe ` variabel. Beachten Sie, dass das ` Ausdruck Der Befehl ` erfordert Leerzeichen um die Operatoren.
    8. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
    9. `#Verwenden des let-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert lassen ` Befehl für arithmetische Operationen.
    10. `Lass Summe = num1 + num2″` : Diese Zeile verwendet das ` lassen ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und weist das Ergebnis dem ` zu Summe ` variabel. Das ` lassen Für den Befehl ` sind keine Leerzeichen um die Operatoren erforderlich.
    11. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
    Arithmetik

    Arithmetik

    28) Erstellen Sie ein Skript, das prüft, ob ein Netzwerkhost erreichbar ist.

    Hier ist ein einfaches Shell-Skript, das mithilfe des Ping-Befehls prüft, ob ein Netzwerkhost erreichbar ist:

    #!/bin/bash
    host=$1″
    if [ -z $host ]; Dann
    Echo-Nutzung: $0
    Ausgang 1
    Sei
    ping -c 4 $host

    wenn [ $? -eq 0 ]; Dann
    echo $host ist erreichbar.
    anders
    echo $host ist nicht erreichbar.
    Sei

    Erläuterung:

    1. Es nimmt einen Hostnamen oder eine IP-Adresse als Argument und prüft, ob das Argument angegeben wird.
    2. Wenn kein Argument angegeben wird, wird eine Nutzungsmeldung angezeigt und der Vorgang beendet.
    3. Es verwendet den Ping-Befehl mit der Option -c 4, um vier ICMP-Echo-Anfragen an den angegebenen Host zu senden.
    4. Nachdem der Ping-Befehl ausgeführt wurde, prüft er den Exit-Status ($?). Wenn der Exit-Status 0 ist, bedeutet dies, dass der Host erreichbar ist und das Skript eine Erfolgsmeldung ausgibt. Andernfalls wird eine Fehlermeldung ausgegeben.

    456

    Notiz : Wir müssen beim Ausführen des Skripts einen Hostnamen als Argument angeben. Hier haben wir google.com verwendet

    29) Schreiben Sie ein Shell-Skript, um das größte Element in einem Array zu finden:

    Hier ist ein Shell-Skript, um das größte Element in einem Array zu finden.

    #!/bin/bash
    # Deklarieren Sie ein Array
    array=(3 56 24 89 67)

    # Initialisieren Sie eine Variable, um den Maximalwert zu speichern, beginnend mit dem ersten Element

    max=${array[0]}

    # Durch das Array iterieren

    für num in ${array[@]}; Tun

    # Vergleichen Sie jedes Element mit dem aktuellen Maximum

    if ((num> max)); Dann
    max=$num
    Sei
    Erledigt

    # Drucken Sie den Maximalwert aus

    echo Das maximale Element im Array ist: $max

    Erläuterung:

    1. ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.
    2. ` array=(3 56 24 89 67) `: Das Array wird deklariert und mit Werten initialisiert.
    3. ` max=${array[0]} `: `max` wird mit dem ersten Element des Arrays initialisiert.
    4. ` für num in ${array[@]}; Tun „: Eine „for“-Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.
    5. ` if ((num> max)); Dann „: Eine „if“-Anweisung prüft, ob das aktuelle Element „num“ größer als das aktuelle Maximum „max“ ist.
    6. ` max=$num`: If`num ` ist größer als `max`, `max` wird mit dem Wert von num aktualisiert.
    7. ` Erledigt `: Die `for`-Schleife ist geschlossen.
    8. ` echo Das maximale Element im Array ist: $max `: Abschließend gibt das Skript den im Array gefundenen Maximalwert aus.
    461

    größte Zahl

    30) Schreiben Sie ein Skript, um die Summe der Elemente in einem Array zu berechnen.

    #!/bin/bash

    # Deklarieren Sie ein Array

    array=(1 65 22 19 94)

    # Initialisieren Sie eine Variable, um die Summe zu speichern

    Summe=0

    # Durchlaufen Sie das Array und fügen Sie jedes Element zur Summe hinzu

    für num in ${array[@]}; Tun
    am=$((am + am))
    Erledigt

    # Drucken Sie die Summe aus

    echo Die Summe der Elemente im Array ist: $sum

    Erläuterung:

    ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.

    ` array=(1 65 22 19 94) `: Das Array wird deklariert und mit Werten initialisiert.

    ` Summe=0 `:` Summe ` wird auf Null initialisiert, um die Summe der Elemente zu speichern.

    ` für num in ${array[@]}; Tun `: A` für Die Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.

    ` am=$((am + am)) `: Innerhalb der Schleife jedes Element ` Auf eins ` wird dem ` hinzugefügt Summe ` variabel.

    ` Erledigt `: Das ` für ` Schleife ist geschlossen.

    „echo Die Summe der Elemente im Array ist: $sum“: Schließlich gibt das Skript die Summe aller Elemente im Array aus.

    462

    Summe der Elemente

    Erfahren Sie mehr über Shell-Skripte

    Abschluss

    Wir alle wissen, dass Shell-Skripte sehr nützlich sind, um die Arbeitsproduktivität zu steigern und auch Zeit zu sparen. In diesem Artikel haben wir es also behandelt 30 sehr nützliche und am meisten betrügerische Beispiele für Shell-Skripte . Wir hoffen, dass diese vollständige Anleitung zum Beispiel für Shell-Skripte Ihnen hilft, alles über die Shell-Skripte zu verstehen.



    `: Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung aus, wobei ` 0 $ ` steht für den Namen des Skripts.
  5. ` Ausgang 1 `: Diese Zeile beendet das Skript mit dem Exit-Code ` 1 `, was auf einen Fehler hinweist.
  6. ` Sei `: Diese Zeile markiert das Ende des ` Wenn ` Aussage.
  7. ` Wenn [ ! -d $Verzeichnis ]; Dann `: Dies startet eine weitere if-Anweisung, um zu prüfen, ob das angegebene Verzeichnis existiert (` -D ` testet für ein Verzeichnis).
  8. ` echo Fehler: „$directory“ ist kein gültiges Verzeichnis. `: Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. ` Ausgang 1 `: Beendet das Skript mit dem Exit-Code ` 1 `.
  10. ` Sei `: Markiert das Ende des zweiten ` wenn` Stellungnahme.
  11. ` echo Leere Dateien im $directory: `: Wenn bisher alles gültig ist, gibt diese Zeile eine Meldung aus, die angibt, dass das Skript leere Dateien im angegebenen Verzeichnis auflistet.
  12. ` finde $directory -type f -empty `: Diese Zeile verwendet das ` finden ` Befehl zum Suchen nach leeren Dateien (` -leer `) vom Typ reguläre Dateien (` -Typ f `) im angegebenen Verzeichnis. Anschließend werden diese leeren Dateien aufgelistet.
Leere Dateien finden

Leere Dateien finden

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/ verwendet

25) Was ist der Zweck des Lesebefehls beim Shell-Scripting?

Mit dem Lesebefehl beim Shell-Scripting fragt das Skript Sie nach Informationen. Es ist, als würde Ihnen ein Computer eine Frage stellen und auf Ihre Antwort warten. Dies ist nützlich für Skripte, bei denen Sie etwas eingeben müssen oder wenn das Skript mit Informationen aus Dateien arbeiten muss. Der Lesebefehl hilft dem Skript, anzuhalten und auf Ihre Eingabe zu warten. Anschließend kann es diese Informationen verwenden, um weitere Aufgaben im Skript auszuführen.

Syntax des Lesebefehls:

read variable_name>

Beispiel : Wenn wir den Namen als Eingabe vom Benutzer verwenden möchten, um ihn zu drucken.

#!/bin/bash
echo Bitte geben Sie Ihren Namen ein:
Namen lesen
echo Hallo, $name!

453

lies nam

Zusammenfassend lässt sich sagen, dass der Lesebefehl verwendet wird, um Benutzereingaben oder Daten aus Dateien in Shell-Skripten zu erfassen, wodurch die Skripte interaktiver und vielseitiger werden.

26) Schreiben Sie ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

Hier ist ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

#!/bin/bash
Verzeichnis=″
if [ -z $directory ]; Dann
Echo-Nutzung:

Bei allen Linux-Distributionen ist das Shell-Skript wie ein Zauberstab, der den Prozess automatisiert, Benutzern Zeit spart und die Produktivität steigert. Dieses Tutorial zur SOLL-Skripterstellung stellt Ihnen mehr als 25 SOLL-Skripting-Beispiele vor.

Aber bevor wir zum Thema übergehen Shell-Scripting Beispiele: Lassen Sie uns Shell-Skripte und die tatsächlichen Anwendungsfälle von Shell-Skripten verstehen.

Was ist Shell-Skript?

Nun, die Schale ist eine CLI ( Befehlszeileninterpreter ), das in einem Textfenster ausgeführt wird, in dem Benutzer Shell-Befehle verwalten und ausführen können. Andererseits wird der Prozess des Schreibens einer Reihe von Befehlen, die auf einem Linux-System ausgeführt werden sollen. Eine Datei, die solche Anweisungen enthält, wird als Bash-Skript bezeichnet.

Verwendung von Shell-Skripten

Im Folgenden sind einige häufige Verwendungszwecke von Shell Script aufgeführt:

  • Aufgabenautomatisierung – Es kann verwendet werden, um sich wiederholende Aufgaben wie regelmäßige Backups und Softwareinstallationsaufgaben zu automatisieren.
  • Anpassung - Man kann Shell-Skripte verwenden, um seine Befehlszeilenumgebung zu entwerfen und seine Aufgabe je nach Bedarf einfach auszuführen.
  • Dokumentenverwaltung - Die Shell-Skripte können auch zum Verwalten und Bearbeiten von Dateien und Verzeichnissen verwendet werden, beispielsweise zum Verschieben, Kopieren, Umbenennen oder Löschen von Dateien.

Beispiele für Shell-Skripte unter Linux

1) Was bedeutet das Shebang (#!) am Anfang eines Shell-Skripts?

Der Mist (#!) am Anfang eines Skripts gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll. Es teilt dem System mit, welche Shell oder welcher Interpreter die Befehle des Skripts interpretieren soll.

Zum Beispiel: Angenommen, wir haben ein Skript mit dem Namen myscript.sh geschrieben in der Bash-Shell:

Mist

Mist

In diesem Beispiel:

  • Das #!/bin/bash am Anfang des Skripts gibt an, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  • Die Echo-Befehle werden zum Drucken von Nachrichten an das Terminal verwendet.

2) Wie führt man ein Shell-Skript über die Befehlszeile aus?

Um ein Shell-Skript über die Befehlszeile auszuführen, müssen wir die folgenden Schritte ausführen:

  • Stellen Sie sicher, dass die Skriptdatei über ausführbare Berechtigungen verfügt chmod-Befehl :
chmod +x myscript.sh>
  • Führen Sie das Skript unter Verwendung seines Dateinamens aus:
./myscript.sh>

Hier muss ersetzt werden myscrtipt.sh mit Ihrem Skriptnamen.

3) Schreiben Sie ein Shell-Skript, das techcodeview.com auf dem Terminal ausgibt.

Erstellen Sie einen Skriptnamen „myscript.sh“ (wir verwenden „ Weil ` Editor, Sie können einen beliebigen Editor auswählen)

vim myscript.sh>

#!/bin/bash
# Dieses Skript druckt techcodeview.com auf dem Terminal
echo techcodeview.com

Namen drucken

Namen drucken

Wir machen unser Skript mit „chmod +x“ ausführbar, führen es dann mit „./myscipt.sh“ aus und erhalten die gewünschte Ausgabe techcodeview.com.

4) Erklären Sie den Zweck des Echo-Befehls beim Shell-Scripting.

Der Echo-Befehl dient der Anzeige von Texten oder Variablen auf dem Terminal. Es wird häufig zum Drucken von Nachrichten, Variablenwerten und zum Generieren von Programmausgaben verwendet.

434

Echo-Befehl

In diesem Beispiel haben wir „echo“ direkt auf dem Terminal ausgeführt, da es innerhalb des Shell-Skripts genauso funktioniert.

5) Wie kann man einer Variablen in einem Shell-Skript einen Wert zuweisen?

Variablen werden Werte mit dem Zuweisungsoperator = zugewiesen.

Zum Beispiel:

#!/bin/bash
# Einer Variablen einen Wert zuweisen
Name=Jayesh
Alter=21
echo $name $age

Erläuterung:

  • Der Namensvariablen wird der Wert Jayesh zugewiesen.
  • Der Altersvariable wird der Wert 21 zugewiesen.
  • echo wird zum Drucken verwendet und `$name` `$age` wird verwendet, um den in den Variablen gespeicherten Wert aufzurufen.

435

6) Schreiben Sie ein Shell-Skript, das den Namen eines Benutzers als Eingabe verwendet und ihn begrüßt.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash
# Fragen Sie den Benutzer nach seinem Namen
echo Wie heißt du?
Namen lesen
# Begrüßen Sie den Benutzer
echo Hallo, $name! Freut mich, Sie kennenzulernen.

Erläuterung:

  • #!/bin/bash: Das ist die Shebang-Zeile. Es weist das System an, den Bash-Interpreter zum Ausführen des Skripts zu verwenden.
  • # Fragen Sie den Benutzer nach seinem Namen: Dies ist ein Kommentar. Es bietet Kontext zum kommenden Code. Kommentare werden vom Interpreter ignoriert.
  • echo Wie heißt du?: Der echo-Befehl wird verwendet, um den Text in doppelten Anführungszeichen auf dem Terminal anzuzeigen.
  • Lesename: Der Lesebefehl wartet auf die Eingabe von Text durch den Benutzer und speichert ihn im Variablennamen.
  • echo Hallo, $name! Freut mich, Sie kennenzulernen.: Diese Zeile verwendet den echo-Befehl, um eine Begrüßungsnachricht zu drucken, die den Wert der Namensvariablen enthält, der aus der Benutzereingabe erfasst wurde.

436

7) Wie fügt man einem Shell-Skript Kommentare hinzu?

Kommentare im Shell-Scripting werden verwendet, um Erklärungen oder Kontext zum Code bereitzustellen. Sie werden vom Interpreter ignoriert und sind nur für Menschen gedacht, die das Skript lesen. Mit dem #-Symbol können Sie Kommentare hinzufügen.

#!/bin/bash
# Dies ist ein Kommentar, der den Zweck des Skripts erläutert
echo gfg

8) Erstellen Sie ein Shell-Skript, das prüft, ob eine Datei im aktuellen Verzeichnis vorhanden ist.

Hier ist ein Skript, das prüft, ob eine Datei namens example.txt im aktuellen Verzeichnis vorhanden ist:

#!/bin/bash
file=example.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
echo Datei existiert: $file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=example.txt: Diese Zeile definiert die Variablendatei und weist ihr den Wert example.txt zu. Sie können dies durch den Namen der Datei ersetzen, nach der Sie suchen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Die Bedingung [ -e $file ] prüft, ob die durch den Wert der Dateivariablen angegebene Datei existiert. Das Flag -e wird verwendet, um zu prüfen, ob eine Datei vorhanden ist.
  4. echo Datei existiert: $datei: Wenn die Bedingung wahr ist (d. h. die Datei existiert), gibt diese Zeile eine Meldung aus, die angibt, dass die Datei existiert, zusammen mit dem Namen der Datei.
  5. else: Wenn die Bedingung falsch ist (d. h. die Datei existiert nicht), führt das Skript den Code unter dem else-Zweig aus.
  6. echo Datei nicht gefunden: $datei: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde, zusammen mit dem Namen der Datei.
  7. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei wird gefunden

Datei wird gefunden

9) Was ist der Unterschied zwischen einfachen Anführungszeichen (‘) und doppelten Anführungszeichen () beim Shell-Scripting?

Einfache Anführungszeichen (‘) und doppelte Anführungszeichen () werden zum Einschließen von Zeichenfolgen in Shell-Skripten verwendet, haben jedoch unterschiedliche Verhaltensweisen:

  • Einfache Anführungszeichen: Alles zwischen einfachen Anführungszeichen wird als Literalzeichenfolge behandelt. Variablennamen und die meisten Sonderzeichen werden nicht erweitert.
  • Doppelte Anführungszeichen: Variablen und bestimmte Sonderzeichen in doppelten Anführungszeichen werden erweitert. Der Inhalt unterliegt der Variablenersetzung und der Befehlsersetzung.

#!/bin/bash

abcd=Hallo
echo ‚$abcd‘ # Ausgabe: $abcd
echo $abcd # Ausgabe: Hallo

10) Wie können Sie Befehlszeilenargumente in einem Shell-Skript verwenden?

Kommandozeilenargumente sind Werte, die einem Skript bei seiner Ausführung bereitgestellt werden. Auf sie kann innerhalb des Skripts über spezielle Variablen wie $1, $2 usw. zugegriffen werden, wobei $1 das erste Argument, $2 das zweite Argument usw. darstellt.

Zum Beispiel: Wenn unser Skriptname in „example.sh“ steht

#!/bin/bash

echo Skriptname: $0
echo Erstes Argument: $1
echo Zweites Argument: $2

Wenn wir das Skript mit „.example.sh hello_1 hello_2“ ausführen, wird Folgendes ausgegeben:

CLI-Argumente

CLI-Argumente

11) Wie verwenden Sie die for-Schleife, um eine Liste von Werten zu durchlaufen?

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

Früchte = (Apfel, Banane, Kirsche, Dattel)
für Obst in ${fruits[@]}; Tun
echo Aktuelle Frucht: $fruit
Erledigt

Erläuterung:

Die Zeile „fruits=“ erstellt ein Array mit dem Namen „Früchte“ mit vier Elementen: Apfel, Banane, Kirsche und Dattel.

  • für Obst in ${fruits[@]}; do: Diese Zeile startet eine for-Schleife. Hier ist, was jeder Teil bedeutet:
  • für Obst: Dies deklariert eine Schleifenvariable namens Obst. In jeder Iteration der Schleife speichert Fruit den Wert des aktuellen Elements aus dem Fruit-Array.
  • ${fruits[@]}: Dies ist eine Array-Erweiterung, die alle Elemente aus dem Fruit-Array übernimmt. Die ${…}-Syntax stellt sicher, dass jedes Element als separates Element behandelt wird.
  • do: Dieses Schlüsselwort markiert den Anfang des Schleifenkörpers.
  • echo Aktuelle Frucht: $fruit: Innerhalb der Schleife verwendet diese Zeile den Echo-Befehl, um den aktuellen Wert der Schleifenvariablen Frucht anzuzeigen. Für jede Frucht im Array wird eine Meldung wie Aktuelle Frucht: Apfel ausgegeben.
  • done: Dieses Schlüsselwort markiert das Ende des Schleifenkörpers. Es teilt dem Skript mit, dass die Schleife beendet ist.
for-Schleife

for-Schleife

12) Schreiben Sie ein Shell-Skript, das mithilfe einer Schleife die Summe der ganzen Zahlen von 1 bis N berechnet.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

echo Geben Sie eine Zahl (N) ein:
lies N
Summe=0
for (( i=1; i<=$N; i++ )); Tun
sum=$((sum + i))
Erledigt
echo Die Summe der ganzen Zahlen von 1 bis $N ist: $sum

Erläuterung:
Das Skript fordert Sie zunächst dazu auf, mithilfe von „read“ eine Zahl (N) einzugeben. Diese Zahl bestimmt, wie oft die Schleife ausgeführt wird.

  1. Die Variablensumme wird auf 0 initialisiert. Diese Variable verfolgt die Summe der Ganzzahlen.
  2. Die for-Schleife beginnt mit for (( i=1; i<=$N; i++ )). Diese Schleifenstruktur wird verwendet, um eine Reihe von Aktionen eine bestimmte Anzahl von Malen zu wiederholen, in diesem Fall von 1 bis zum Wert N.
  3. Innerhalb der Schleife passieren folgende Dinge:
    • i=1 setzt die Schleifenvariable i zu Beginn jeder Iteration auf 1.
    • Die Schleifenbedingung i<=$N prüft, ob i immer noch kleiner oder gleich der angegebenen Zahl N ist.
    • Wenn die Bedingung wahr ist, wird der Schleifenkörper ausgeführt.
    • sum=$((sum + i)) berechnet den neuen Wert von sum, indem der aktuelle Wert von i dazu addiert wird. Dadurch werden die ganzen Zahlen von 1 bis zum aktuellen i-Wert addiert.
  4. Nach jeder Iteration erhöht i++ den Wert von i um 1.
  5. Die Schleife läuft weiter, bis die Bedingung i<=$N falsch wird (wenn i größer als N wird).
  6. Sobald die Schleife beendet ist, zeigt das Skript die Summe der ganzen Zahlen von 1 bis zur eingegebenen Zahl N an.

439

13) Erstellen Sie ein Skript, das nach einem bestimmten Wort in einer Datei sucht und dessen Vorkommen zählt.

Erstellen Sie einen Skriptnamen „word_count.sh“.

#!/bin/bash

echo Geben Sie das Wort ein, nach dem gesucht werden soll:
Zielwort lesen
echo Geben Sie den Dateinamen ein:
Dateinamen lesen
count=$(grep -o -w $target_word $filename | wc -l)
echo Das Wort „$target_word“ kommt $count mal in „$filename“ vor.

Erläuterung:

  • echo Geben Sie das zu suchende Wort ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, ein Wort einzugeben, nach dem er in einer Datei suchen möchte.
  • read target_word: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens target_word.
  • echo Geben Sie den Dateinamen ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, den Namen der Datei einzugeben, in der er suchen möchte.
  • Dateinamen lesen: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens Dateiname.
  • count=$(grep -o -w $target_word $filename | wc -l): Diese Zeile erledigt die Hauptarbeit des Skripts. Lassen Sie es uns weiter aufschlüsseln:
    • grep -o -w $target_word $filename: Dieser Teil des Befehls sucht nach Vorkommen des target_word im angegebenen Dateinamen. Die Optionen -o und -w stellen sicher, dass nur Ganzwortübereinstimmungen gezählt werden.
    • |: Dies ist eine Pipe, die die Ausgabe des vorherigen Befehls übernimmt und als Eingabe an den nächsten Befehl sendet.
    • wc -l: Dieser Teil des Befehls verwendet den Befehl wc, um die Anzahl der Zeilen in der Eingabe zu zählen. Die Option -l zählt gezielt die Zeilen.
    • Der gesamte Befehl berechnet die Anzahl der Vorkommen des Zielworts in der Datei und weist diese Anzahl der Variablen coun zu

441

14) Erklären Sie die Unterschiede zwischen Standardausgabe (stdout) und Standardfehler (stderr).

Der Hauptunterschied zwischen Standardausgabe (stdout) und Standardfehler (stderr) ist wie folgt:

  • Standardausgabe (stdout): Dies ist der Standardausgabestream, in den die reguläre Ausgabe eines Befehls geht. Es wird standardmäßig auf dem Terminal angezeigt. Sie können es mit> in eine Datei umleiten.
  • Standardfehler (stderr): Dies ist der Ausgabestream für Fehlermeldungen und Warnungen. Es wird standardmäßig auch auf dem Terminal angezeigt. Sie können es mit 2> in eine Datei umleiten.

15) Erklären Sie das Konzept bedingter Anweisungen im Shell-Scripting.

Bedingte Anweisungen im Shell-Scripting ermöglichen es uns, Entscheidungen zu treffen und den Ablauf unseres Skripts auf der Grundlage bestimmter Bedingungen zu steuern. Sie ermöglichen unserem Skript, unterschiedliche Befehlssätze auszuführen, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist. Die primären bedingten Anweisungen beim Shell-Scripting sind die if-Anweisung, die elif-Anweisung (optional) und die else-Anweisung (optional).

Hier ist die Grundstruktur einer bedingten Anweisung im Shell-Scripting:

if [ Bedingung ]; Dann
# Befehle, die ausgeführt werden sollen, wenn die Bedingung wahr ist
elif [ another_condition ]; Dann
# Befehle, die ausgeführt werden sollen, wenn another_condition wahr ist (optional)
anders
# Befehle, die ausgeführt werden sollen, wenn keine der Bedingungen wahr ist (optional)
Sei

Erläuterung:

  • [ Bedingung ] = Befehl, der die Bedingung auswertet und einen Exit-Status „wahr“ (0) oder „falsch“ (ungleich Null) zurückgibt.
  • then = Es handelt sich um ein Schlüsselwort, das angibt, dass die darauf folgenden Befehle ausgeführt werden, wenn die Bedingung „true“ ergibt.
  • elif = (Abkürzung für else if) Dies ist ein Abschnitt, der es uns ermöglicht, zusätzliche zu überprüfende Bedingungen anzugeben.
  • else = es ist ein Abschnitt, der Befehle enthält, die ausgeführt werden, wenn keine der Bedingungen wahr ist.
  • fi = Es ist ein Schlüsselwort, das das Ende des bedingten Blocks markiert.

16) Wie liest man Zeilen aus einer Datei in einem Shell-Skript?

Zu Zeilen lesen Aus einer Datei innerhalb eines Shell-Skripts können wir verschiedene Methoden verwenden, aber ein gängiger Ansatz ist die Verwendung einer While-Schleife in Kombination mit dem Lesebefehl. So können wir es machen:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
while IFS= read -r line; Tun
echo Zeile gelesen: $line
# Fügen Sie hier Ihre Verarbeitungslogik hinzu
erledigt <$file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=/home/jayeshkumar/jayesh.txt: Diese Zeile definiert die Variablendatei und weist den vollständigen Pfad zur Datei jayesh.txt im Verzeichnis /home/jayeshkumar zu. Ändern Sie diesen Pfad so, dass er mit dem tatsächlichen Pfad der Datei übereinstimmt, die Sie lesen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Es prüft, ob die durch die Variable $file angegebene Datei existiert. Das Flag -e prüft, ob eine Datei vorhanden ist.
  4. while IFS= read -r line; do: Diese Zeile initiiert eine While-Schleife, die Zeilen aus der Datei liest.
    • IFS=: Das IFS (Internal Field Separator) wird auf einen leeren Wert gesetzt, um führende und nachfolgende Leerzeichen beizubehalten.
    • read -r line: Dies liest die aktuelle Zeile aus der Datei und speichert sie in der Variablen line.
  5. echo Zeile gelesen: $line: Diese Zeile gibt den Inhalt der Zeile aus, die aus der Datei gelesen wurde. Die Variable $line enthält den Inhalt der aktuellen Zeile.
  6. # Fügen Sie hier Ihre Verarbeitungslogik hinzu: Dies ist ein Platzhalterkommentar, in dem Sie Ihre eigene Logik zur Verarbeitung jeder Zeile hinzufügen können. Beispielsweise können Sie die Zeile analysieren, Informationen extrahieren oder bestimmte Aktionen basierend auf dem Inhalt ausführen.
  7. done <$file: Dies markiert das Ende der while-Schleife. Das < $file leitet den Inhalt der Datei um, damit er von der Schleife gelesen werden kann.
  8. else: Wenn die Datei nicht existiert (die Bedingung in der if-Anweisung ist falsch), führt das Skript den Code unter dem else-Zweig aus.
  9. echo Datei nicht gefunden: $file: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde.
  10. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei lesen

Datei lesen

Hier haben wir „“ verwendet pwd ` Befehl, um den Pfad des aktuellen Verzeichnisses abzurufen.

17) Schreiben Sie eine Funktion in ein Shell-Skript, die die Fakultät einer bestimmten Zahl berechnet.

Hier ist das Skript, dasBerechnen Sie die Fakultäteiner gegebenen Zahl.

#!/bin/bash
# Definieren Sie eine Funktion zur Berechnung der Fakultät
berechne_faktorial() {
num=$1
Tatsache=1
for ((i=1; i<=num; i++)); Tun
fact=$((fact * i))
Erledigt
echo $fact
}
# Fordern Sie den Benutzer auf, eine Nummer einzugeben
echo Geben Sie eine Zahl ein:
lese input_num
# Rufen Sie die Funktion „calcure_factorial“ mit der Eingabenummer auf
factial_result=$(calculate_factorial $input_num)
# Zeigen Sie das faktorielle Ergebnis an
echo Factorial von $input_num ist: $factorial_result

Erläuterung:

  1. Das Skript beginnt mit der Shebang-Zeile #!/bin/bash, um den Interpreter anzugeben.
  2. berechne_faktorial() ist als Funktion definiert. Es benötigt ein Argument, num, das die Zahl ist, für die die Fakultät berechnet werden muss.
  3. Innerhalb der Funktion wird fact auf 1 initialisiert. Diese Variable speichert das Fakultätsergebnis.
  4. Die for-Schleife iteriert von 1 bis zur angegebenen Zahl (num). In jeder Iteration multipliziert es den aktuellen Wert von fact mit dem Schleifenindex i.
  5. Nach Abschluss der Schleife enthält die Faktenvariable die berechnete Fakultät.
  6. Das Skript fordert den Benutzer mit „read“ zur Eingabe einer Zahl auf.
  7. Die Funktion „calcure_factorial“ wird mit der vom Benutzer angegebenen Zahl aufgerufen und das Ergebnis wird in der Variablen „factorial_result“ gespeichert.
  8. Abschließend zeigt das Skript das berechnete Fakultätsergebnis an.
Fakultät

Fakultät

18) Wie gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um?

In einem Shell-Skript können Sie Signale wie Strg+C (auch bekannt als SIGINT) mit dem Trap-Befehl verarbeiten. Strg+C generiert ein SIGINT-Signal, wenn der Benutzer es drückt, um das laufende Skript oder Programm zu unterbrechen. Mithilfe des Trap-Befehls können Sie Aktionen festlegen, die ausgeführt werden sollen, wenn ein bestimmtes Signal empfangen wird. So gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um:

#!/bin/bash
Aufräumen() {
echo Skript unterbrochen. Bereinigung wird durchgeführt…
# Fügen Sie hier Ihre Bereinigungsaktionen hinzu
Ausgang 1
}
# Richten Sie eine Falle ein, um die Bereinigungsfunktion aufzurufen, wenn Strg+C (SIGINT) empfangen wird
Fallenbereinigung SIGINT
# Rest Ihres Skripts
echo Laufen…
Schlaf 10
echo Fertig.

Der Umgang mit Signalen ist wichtig, um Skripte robust zu machen und sicherzustellen, dass sie unerwartete Unterbrechungen ordnungsgemäß verarbeiten. Sie können die Bereinigungsfunktion an Ihre spezifischen Anforderungen anpassen, z. B. Dateien schließen, Prozesse stoppen oder Informationen protokollieren, bevor das Skript beendet wird.

Erläuterung:

  1. #!/bin/bash: Diese Shebang-Zeile gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll.
  2. cleanup() { … }: Dies definiert eine Funktion namens cleanup. In diese Funktion können Sie alle Aktionen einschließen, die ausgeführt werden müssen, wenn das Skript unterbrochen wird, z. B. das Schließen von Dateien, das Freigeben von Ressourcen oder das Durchführen anderer Bereinigungsaufgaben.
  3. trap cleanup SIGINT: Der trap-Befehl wird zum Einrichten eines Signalhandlers verwendet. In diesem Fall wird angegeben, dass die Bereinigungsfunktion ausgeführt werden soll, wenn das SIGINT-Signal (Strg+C) empfangen wird.
  4. echo Running…, sleep 10, echo Finished.: Dies sind nur Beispielbefehle, um die Ausführung eines Skripts zu simulieren.

446

19) Erstellen Sie ein Skript, das nach doppelten Zeilen in einer Textdatei sucht und diese entfernt.

Hier ist unser Linux-Skript, in dem wir doppelte Zeilen aus einer Textdatei entfernen.

#!/bin/bash
input_file=input.txt
Ausgabedatei=Ausgabe.txt
$input_file | sortieren uniq> $output_file
echo Doppelte Zeilen erfolgreich entfernt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Variable input_file wird auf den Namen der Eingabedatei gesetzt, die doppelte Zeilen enthält (ändern Sie diesen in Ihren tatsächlichen Namen der Eingabedatei).
  3. Die Variable „output_file“ wird auf den Namen der Ausgabedatei gesetzt, aus der die Duplikate entfernt werden (ändern Sie diesen in den gewünschten Namen der Ausgabedatei).
  4. Das Skript verwendet den Sortierbefehl, um die Zeilen in der Eingabedatei zu sortieren. Durch das Sortieren der Zeilen wird sichergestellt, dass doppelte Zeilen gruppiert werden.
  5. Die sortierten Zeilen werden dann durch den Befehl uniq geleitet, der aufeinanderfolgende doppelte Zeilen entfernt. Die Ausgabe dieses Prozesses wird in die Ausgabedatei umgeleitet.
  6. Nachdem die Duplikate entfernt wurden, gibt das Skript eine Erfolgsmeldung aus.
Entfernen doppelter Zeilen

Entfernen doppelter Zeilen

Hier verwenden wir „ Katze ` um den Text in der Textdatei anzuzeigen.

20) Schreiben Sie ein Skript, das ein sicheres Zufallspasswort generiert.

Hier ist unser Skript zum Generieren eines sicheren Zufallspassworts.

#!/bin/bash
# Funktion zum Generieren eines zufälligen Passworts
generiere Passwort() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Rufen Sie die Funktion auf und speichern Sie das generierte Passwort
passwort=$(generate_password)
echo Generiertes Passwort: $password

Hinweis: Der Benutzer kann die Länge seines Passworts entsprechend ändern, indem er die Zahl „12“ ersetzt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass es mit der Bash-Shell interpretiert werden soll.
  2. Die Funktion „generate_password“ ist so definiert, dass sie ein zufälliges Passwort generiert. So funktioniert das:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • falten -w 12 unterteilt die gefilterten Zufallsdaten in Zeilen mit einer Breite von jeweils 12 Zeichen.
    • head -n 1 wählt die erste Zeile aus und gibt uns effektiv eine zufällige Folge von Zeichen der Länge 12.
  3. Der Variable „password“ wird das Ergebnis des Aufrufs der Funktion „generate_password“ zugewiesen.
  4. Abschließend wird das generierte Passwort mittels Echo angezeigt.

448

21) Schreiben Sie ein Shell-Skript, das die Gesamtgröße aller Dateien in einem Verzeichnis berechnet.

Hier ist ein Shell-Skript zur Berechnung der Gesamtgröße aller Dateien in einem Verzeichnis.

#!/bin/bash
Verzeichnis=/Pfad/zu/Ihrem/Verzeichnis
total_size=$(du -csh $directory | grep total | awk ‚{print $1}‘)
echo Gesamtgröße der Dateien in $directory: $total_size

Erläuterung:

  1. Das Skript beginnt mit dem Befehl #!/bin/bash, der darauf hinweist, dass es mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Verzeichnisvariable wird auf den Pfad des Verzeichnisses gesetzt, für das Sie die Gesamtdateigröße berechnen möchten. Ersetzen Sie /path/to/your/directory durch den tatsächlichen Pfad.
  3. Der Befehl du wird verwendet, um die Dateispeichernutzung abzuschätzen. Die verwendeten Optionen sind:
    • -c: Erzeuge eine Gesamtsumme.
    • -s: Zeigt nur die Gesamtgröße des angegebenen Verzeichnisses an.
    • -h: Druckgrößen in einem für Menschen lesbaren Format (z. B. KB, MB, GB).
  4. Die Ausgabe von du wird an grep total weitergeleitet, um die Zeile herauszufiltern, die die Gesamtgröße enthält.
  5. awk „{print $1}“ wird verwendet, um das erste Feld (Gesamtgröße) aus der Zeile zu extrahieren.
  6. Die berechnete Gesamtgröße wird in der Variablen total_size gespeichert.
  7. Abschließend zeigt das Skript mithilfe von Echo die Gesamtgröße an.
Gesamtgröße der Dateien

Gesamtgröße der Dateien

Hier haben wir „“ verwendet pwd ` Befehl, um den aktuellen Verzeichnispfad anzuzeigen.

22) Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting.

Besonderheit `if`Staiftement `elif`-Erklärung
Zweck Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting. Stellt alternative Bedingungen bereit, um zu überprüfen, ob die anfängliche If-Bedingung falsch ist.
Verwendung Wird für den Anfangszustand verwendet. Wird nach der anfänglichen if-Bedingung verwendet, um zusätzliche Bedingungen zu überprüfen.
Anzahl der Blöcke Kann nur einen if-Block haben. Kann mehrere elif-Blöcke haben, aber nur einen else-Block (optional).
Ausführung Führt den mit der if-Anweisung verknüpften Codeblock aus, wenn die Bedingung wahr ist. Wenn die Bedingung falsch ist, wird der else-Block (falls vorhanden) ausgeführt (optional). Überprüft jede Elif-Bedingung der Reihe nach. Wenn eine elif-Bedingung wahr ist, wird der entsprechende Codeblock ausgeführt und das Skript verlässt den gesamten bedingten Block. Wenn keine der elif-Bedingungen wahr ist, wird der else-Block (falls vorhanden) ausgeführt.
Verschachtelte Strukturen Kann in anderen if-, elif- oder else-Blöcken verschachtelt werden. Kann nicht in einem anderen elif-Block verschachtelt werden, kann aber in einem if- oder else-Block verwendet werden.

Lassen Sie es uns anhand eines Beispiels verstehen.

#!/bin/bash
Zahl=5
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
anders
echo $number ist nicht größer als 10
Sei
Echo ——–
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
elif [ $number -eq 10 ]; Dann
echo $number ist gleich 10
anders
echo $number ist kleiner als 10
Sei

Erläuterung:

In diesem Beispiel prüft der erste if-Block, ob die Zahl größer als 10 ist. Wenn nicht, gibt er eine Meldung aus, die angibt, dass die Zahl nicht größer als 10 ist. Der zweite Block mit elif-Anweisungen prüft nacheinander mehrere Bedingungen, bis eine davon wahr ist. Da in diesem Fall der Wert von number 5 ist, lautet die Ausgabe:

if_elif Unterschied

if_elif Unterschied

23) Wie nutzt man eine While-Schleife, um Befehle wiederholt auszuführen?

Bei der Shell-Skripterstellung wird eine While-Schleife verwendet, um eine Reihe von Befehlen wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist. Die Schleife führt die Befehle so lange aus, bis die Bedingung falsch wird.

Hier ist die grundlegende Syntax einer While-Schleife:

while [ Bedingung ]; Tun
# Auszuführende Befehle
Erledigt

Erläuterung:

  1. Die „while“-Schleife beginnt mit dem Schlüsselwort „while“, gefolgt von einer in eckigen Klammern eingeschlossenen Bedingung „[ ]“.
  2. Der Schleifenkörper, der die auszuführenden Befehle enthält, ist in die Schlüsselwörter „do“ und „done“ eingeschlossen.
  3. Die Schleife prüft zunächst die Bedingung. Wenn die Bedingung wahr ist, werden die Befehle im Schleifenkörper ausgeführt. Nachdem der Schleifenkörper ausgeführt wurde, wird die Bedingung erneut überprüft und der Vorgang wiederholt, bis die Bedingung falsch wird.

Beispiel: Wenn wir Zahlen von 1 bis 5 drucken möchten

#!/bin/bash
Zähler=1
while [ $counter -le 5 ]; Tun
Echo-Nummer: $counter
counter=$((counter + 1))
Erledigt

Erläuterung:

  • Die Zählervariable wird auf 1 gesetzt.
  • Die while-Schleife prüft, ob der Wert von counter kleiner oder gleich 5 ist. Solange diese Bedingung erfüllt ist, wird die Schleife weiter ausgeführt.
  • Innerhalb der Schleife wird der aktuelle Wert des Zählers mithilfe von Echo ausgegeben.
  • Der Zähler wird mit dem Ausdruck $((Zähler + 1)) um 1 erhöht.
while-Schleife

while-Schleife

24) Erstellen Sie ein Shell-Skript, das alle leeren Dateien in einem Verzeichnis findet und auflistet.

Shell-Skript, mit dem Sie mithilfe der Befehle „find“ und „stat“ alle leeren Dateien in einem Verzeichnis suchen und auflisten können:

#!/bin/bash
Verzeichnis=$1″
if [ -z $directory ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann
echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei
echo Leere Dateien im $directory:
finde $directory -type f -empty

Erläuterung:

  1. ` #!/bin/bash „: Dies wird als Shebang bezeichnet und weist das Betriebssystem an, die Bash-Shell zum Interpretieren und Ausführen des Skripts zu verwenden.
  2. ` Verzeichnis=$1″ `: Diese Zeile weist der Variablen ` das erste Befehlszeilenargument (bezeichnet mit $1) zu Verzeichnis `.
  3. ` if [ -z $directory ]; Dann `: Diese Zeile startet eine if-Anweisung, die prüft, ob das ` Verzeichnis ` Variable ist leer (-z testet auf eine leere Zeichenfolge).
  4. ` Echo-Nutzung: $0 `: Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung aus, wobei ` 0 $ ` steht für den Namen des Skripts.
  5. ` Ausgang 1 `: Diese Zeile beendet das Skript mit dem Exit-Code ` 1 `, was auf einen Fehler hinweist.
  6. ` Sei `: Diese Zeile markiert das Ende des ` Wenn ` Aussage.
  7. ` Wenn [ ! -d $Verzeichnis ]; Dann `: Dies startet eine weitere if-Anweisung, um zu prüfen, ob das angegebene Verzeichnis existiert (` -D ` testet für ein Verzeichnis).
  8. ` echo Fehler: „$directory“ ist kein gültiges Verzeichnis. `: Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. ` Ausgang 1 `: Beendet das Skript mit dem Exit-Code ` 1 `.
  10. ` Sei `: Markiert das Ende des zweiten ` wenn` Stellungnahme.
  11. ` echo Leere Dateien im $directory: `: Wenn bisher alles gültig ist, gibt diese Zeile eine Meldung aus, die angibt, dass das Skript leere Dateien im angegebenen Verzeichnis auflistet.
  12. ` finde $directory -type f -empty `: Diese Zeile verwendet das ` finden ` Befehl zum Suchen nach leeren Dateien (` -leer `) vom Typ reguläre Dateien (` -Typ f `) im angegebenen Verzeichnis. Anschließend werden diese leeren Dateien aufgelistet.
Leere Dateien finden

Leere Dateien finden

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/ verwendet

25) Was ist der Zweck des Lesebefehls beim Shell-Scripting?

Mit dem Lesebefehl beim Shell-Scripting fragt das Skript Sie nach Informationen. Es ist, als würde Ihnen ein Computer eine Frage stellen und auf Ihre Antwort warten. Dies ist nützlich für Skripte, bei denen Sie etwas eingeben müssen oder wenn das Skript mit Informationen aus Dateien arbeiten muss. Der Lesebefehl hilft dem Skript, anzuhalten und auf Ihre Eingabe zu warten. Anschließend kann es diese Informationen verwenden, um weitere Aufgaben im Skript auszuführen.

Syntax des Lesebefehls:

read variable_name>

Beispiel : Wenn wir den Namen als Eingabe vom Benutzer verwenden möchten, um ihn zu drucken.

#!/bin/bash
echo Bitte geben Sie Ihren Namen ein:
Namen lesen
echo Hallo, $name!

453

lies nam

Zusammenfassend lässt sich sagen, dass der Lesebefehl verwendet wird, um Benutzereingaben oder Daten aus Dateien in Shell-Skripten zu erfassen, wodurch die Skripte interaktiver und vielseitiger werden.

26) Schreiben Sie ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

Hier ist ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

#!/bin/bash
Verzeichnis=$1″
if [ -z $directory ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann

echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei

cd $verzeichnis || Ausgang 1

für Datei in *; Tun
if [ -f $file ]; Dann
newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘)
[ $file != $newname ] && mv $file $newname
Sei
Erledigt

Erläuterung:

  1. #!/bin/bash : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Verzeichnis=$1″ : Diese Zeile weist das erste Befehlszeilenargument dem Variablenverzeichnis zu.
  3. if [ -z $directory ]; Dann : Diese Zeile prüft, ob die Verzeichnisvariable leer ist (kein Argument angegeben, wenn das Skript ausgeführt wird).
  4. Echo-Nutzung: $0 : Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung mit dem Namen des Skripts ($0) aus.
  5. Ausgang 1 : Diese Zeile beendet das Skript mit dem Exit-Code 1, was darauf hinweist, dass ein Fehler aufgetreten ist.
  6. F i: Dies markiert das Ende der ersten if-Anweisung.
  7. Wenn [ ! -d $Verzeichnis ]; Dann : Diese Zeile prüft, ob das angegebene Verzeichnis nicht existiert (-d testet ein Verzeichnis).
  8. echo Fehler: „$directory“ ist kein gültiges Verzeichnis. : Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. Ausgang 1 : Beendet das Skript mit dem Exit-Code 1.
  10. Sei : Markiert das Ende der zweiten if-Anweisung.
  11. cd $verzeichnis || Ausgang 1 : Ändert das aktuelle Arbeitsverzeichnis in das angegebene Verzeichnis. Wenn der Verzeichniswechsel fehlschlägt (z. B. Verzeichnis nicht vorhanden), wird das Skript mit einem Fehlercode beendet.
  12. für Datei in *; Tun: ICH für Datei in *; Tun: löst eine Schleife aus, die alle Elemente im aktuellen Verzeichnis durchläuft (* entspricht allen Dateinamen).
  13. if [ -f $file ]; Dann : Überprüft, ob das aktuelle Schleifeniterationselement eine reguläre Datei ist (-f testet auf eine reguläre Datei).
  14. newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘) : Wandelt den aktuellen Dateinamen ($file) mit dem Befehl tr in Kleinbuchstaben um und speichert das Ergebnis in der Variablen newname.
  15. [ $file != $newname ] && mv $file $newname : Vergleicht den ursprünglichen Dateinamen mit dem neuen Dateinamen in Kleinbuchstaben. Wenn sie unterschiedlich sind, wird die Datei mit dem Befehl mv umbenannt.
  16. Sei : Markiert das Ende der inneren if-Anweisung.
  17. Erledigt : Markiert das Ende der Schleife.

454

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/test verwendet

27) Wie können Sie arithmetische Operationen innerhalb eines Shell-Skripts verwenden?

Arithmetische Operationen können innerhalb eines Shell-Skripts mithilfe verschiedener integrierter Methoden ausgeführt werden. Die Shell bietet Mechanismen für einfache arithmetische Berechnungen mithilfe der arithmetischen Erweiterung wie:

  1. Arithmetische Erweiterung ($((…)))
  2. Verwenden des expr-Befehls
  3. Verwenden des let-Befehls

Hier ist unser Shell-Skript, das alle drei Methoden für arithmetische Operationen erklärt.

#!/bin/bash
num1=10
num2=5

#Arithmetische Erweiterung ($((…)))

Ergebnis=$((num1 + num2))
echo Summe: $result

#Verwenden des expr-Befehls

sum=$(expr $num1 + $num2)
echo Summe: $sum

#Verwenden des let-Befehls

sei sum = num1 + num2
echo Summe: $sum

Erläuterung:

  1. `#!/bin/bash` : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. `num1=10` und ` num2=5` : Diese Zeilen weisen den Variablen ` die Werte 10 und 5 zu num1 ` und ` num2 ` bzw.
  3. `#Arithmetische Erweiterung ($((…)))` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die arithmetische Erweiterung demonstriert.
  4. `result=$((num1 + num2))` : Diese Zeile verwendet eine arithmetische Erweiterung, um die Summe von ` zu berechnen num1 ` und ` num2 ` und speichert das Ergebnis im ` Ergebnis ` variabel.
  5. „echo Summe: $result“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Ergebnis ` variabel.
  6. `#Verwenden des expr-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert Ausdruck ` Befehl für arithmetische Operationen.
  7. `sum=$(expr $num1 + $num2)` : Diese Zeile verwendet das ` Ausdruck ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und speichert das Ergebnis im ` Summe ` variabel. Beachten Sie, dass das ` Ausdruck Der Befehl ` erfordert Leerzeichen um die Operatoren.
  8. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
  9. `#Verwenden des let-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert lassen ` Befehl für arithmetische Operationen.
  10. `Lass Summe = num1 + num2″` : Diese Zeile verwendet das ` lassen ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und weist das Ergebnis dem ` zu Summe ` variabel. Das ` lassen Für den Befehl ` sind keine Leerzeichen um die Operatoren erforderlich.
  11. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
Arithmetik

Arithmetik

28) Erstellen Sie ein Skript, das prüft, ob ein Netzwerkhost erreichbar ist.

Hier ist ein einfaches Shell-Skript, das mithilfe des Ping-Befehls prüft, ob ein Netzwerkhost erreichbar ist:

#!/bin/bash
host=$1″
if [ -z $host ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei
ping -c 4 $host

wenn [ $? -eq 0 ]; Dann
echo $host ist erreichbar.
anders
echo $host ist nicht erreichbar.
Sei

Erläuterung:

  1. Es nimmt einen Hostnamen oder eine IP-Adresse als Argument und prüft, ob das Argument angegeben wird.
  2. Wenn kein Argument angegeben wird, wird eine Nutzungsmeldung angezeigt und der Vorgang beendet.
  3. Es verwendet den Ping-Befehl mit der Option -c 4, um vier ICMP-Echo-Anfragen an den angegebenen Host zu senden.
  4. Nachdem der Ping-Befehl ausgeführt wurde, prüft er den Exit-Status ($?). Wenn der Exit-Status 0 ist, bedeutet dies, dass der Host erreichbar ist und das Skript eine Erfolgsmeldung ausgibt. Andernfalls wird eine Fehlermeldung ausgegeben.

456

Notiz : Wir müssen beim Ausführen des Skripts einen Hostnamen als Argument angeben. Hier haben wir google.com verwendet

29) Schreiben Sie ein Shell-Skript, um das größte Element in einem Array zu finden:

Hier ist ein Shell-Skript, um das größte Element in einem Array zu finden.

#!/bin/bash
# Deklarieren Sie ein Array
array=(3 56 24 89 67)

# Initialisieren Sie eine Variable, um den Maximalwert zu speichern, beginnend mit dem ersten Element

max=${array[0]}

# Durch das Array iterieren

für num in ${array[@]}; Tun

# Vergleichen Sie jedes Element mit dem aktuellen Maximum

if ((num> max)); Dann
max=$num
Sei
Erledigt

# Drucken Sie den Maximalwert aus

echo Das maximale Element im Array ist: $max

Erläuterung:

  1. ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.
  2. ` array=(3 56 24 89 67) `: Das Array wird deklariert und mit Werten initialisiert.
  3. ` max=${array[0]} `: `max` wird mit dem ersten Element des Arrays initialisiert.
  4. ` für num in ${array[@]}; Tun „: Eine „for“-Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.
  5. ` if ((num> max)); Dann „: Eine „if“-Anweisung prüft, ob das aktuelle Element „num“ größer als das aktuelle Maximum „max“ ist.
  6. ` max=$num`: If`num ` ist größer als `max`, `max` wird mit dem Wert von num aktualisiert.
  7. ` Erledigt `: Die `for`-Schleife ist geschlossen.
  8. ` echo Das maximale Element im Array ist: $max `: Abschließend gibt das Skript den im Array gefundenen Maximalwert aus.
461

größte Zahl

30) Schreiben Sie ein Skript, um die Summe der Elemente in einem Array zu berechnen.

#!/bin/bash

# Deklarieren Sie ein Array

array=(1 65 22 19 94)

# Initialisieren Sie eine Variable, um die Summe zu speichern

Summe=0

# Durchlaufen Sie das Array und fügen Sie jedes Element zur Summe hinzu

für num in ${array[@]}; Tun
am=$((am + am))
Erledigt

# Drucken Sie die Summe aus

echo Die Summe der Elemente im Array ist: $sum

Erläuterung:

` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.

` array=(1 65 22 19 94) `: Das Array wird deklariert und mit Werten initialisiert.

` Summe=0 `:` Summe ` wird auf Null initialisiert, um die Summe der Elemente zu speichern.

` für num in ${array[@]}; Tun `: A` für Die Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.

` am=$((am + am)) `: Innerhalb der Schleife jedes Element ` Auf eins ` wird dem ` hinzugefügt Summe ` variabel.

` Erledigt `: Das ` für ` Schleife ist geschlossen.

„echo Die Summe der Elemente im Array ist: $sum“: Schließlich gibt das Skript die Summe aller Elemente im Array aus.

462

Summe der Elemente

Erfahren Sie mehr über Shell-Skripte

Abschluss

Wir alle wissen, dass Shell-Skripte sehr nützlich sind, um die Arbeitsproduktivität zu steigern und auch Zeit zu sparen. In diesem Artikel haben wir es also behandelt 30 sehr nützliche und am meisten betrügerische Beispiele für Shell-Skripte . Wir hoffen, dass diese vollständige Anleitung zum Beispiel für Shell-Skripte Ihnen hilft, alles über die Shell-Skripte zu verstehen.




Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann

echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei

cd $verzeichnis || Ausgang 1

für Datei in *; Tun
if [ -f $file ]; Dann
newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘)
[ $file != $newname ] && mv $file $newname
Sei
Erledigt

Erläuterung:

Teilstring-Funktion Java
  1. #!/bin/bash : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Verzeichnis=″ : Diese Zeile weist das erste Befehlszeilenargument dem Variablenverzeichnis zu.
  3. if [ -z $directory ]; Dann : Diese Zeile prüft, ob die Verzeichnisvariable leer ist (kein Argument angegeben, wenn das Skript ausgeführt wird).
  4. Echo-Nutzung:

    Bei allen Linux-Distributionen ist das Shell-Skript wie ein Zauberstab, der den Prozess automatisiert, Benutzern Zeit spart und die Produktivität steigert. Dieses Tutorial zur SOLL-Skripterstellung stellt Ihnen mehr als 25 SOLL-Skripting-Beispiele vor.

    Aber bevor wir zum Thema übergehen Shell-Scripting Beispiele: Lassen Sie uns Shell-Skripte und die tatsächlichen Anwendungsfälle von Shell-Skripten verstehen.

    Was ist Shell-Skript?

    Nun, die Schale ist eine CLI ( Befehlszeileninterpreter ), das in einem Textfenster ausgeführt wird, in dem Benutzer Shell-Befehle verwalten und ausführen können. Andererseits wird der Prozess des Schreibens einer Reihe von Befehlen, die auf einem Linux-System ausgeführt werden sollen. Eine Datei, die solche Anweisungen enthält, wird als Bash-Skript bezeichnet.

    Verwendung von Shell-Skripten

    Im Folgenden sind einige häufige Verwendungszwecke von Shell Script aufgeführt:

    • Aufgabenautomatisierung – Es kann verwendet werden, um sich wiederholende Aufgaben wie regelmäßige Backups und Softwareinstallationsaufgaben zu automatisieren.
    • Anpassung - Man kann Shell-Skripte verwenden, um seine Befehlszeilenumgebung zu entwerfen und seine Aufgabe je nach Bedarf einfach auszuführen.
    • Dokumentenverwaltung - Die Shell-Skripte können auch zum Verwalten und Bearbeiten von Dateien und Verzeichnissen verwendet werden, beispielsweise zum Verschieben, Kopieren, Umbenennen oder Löschen von Dateien.

    Beispiele für Shell-Skripte unter Linux

    1) Was bedeutet das Shebang (#!) am Anfang eines Shell-Skripts?

    Der Mist (#!) am Anfang eines Skripts gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll. Es teilt dem System mit, welche Shell oder welcher Interpreter die Befehle des Skripts interpretieren soll.

    Zum Beispiel: Angenommen, wir haben ein Skript mit dem Namen myscript.sh geschrieben in der Bash-Shell:

    Mist

    Mist

    In diesem Beispiel:

    • Das #!/bin/bash am Anfang des Skripts gibt an, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    • Die Echo-Befehle werden zum Drucken von Nachrichten an das Terminal verwendet.

    2) Wie führt man ein Shell-Skript über die Befehlszeile aus?

    Um ein Shell-Skript über die Befehlszeile auszuführen, müssen wir die folgenden Schritte ausführen:

    • Stellen Sie sicher, dass die Skriptdatei über ausführbare Berechtigungen verfügt chmod-Befehl :
    chmod +x myscript.sh>
    • Führen Sie das Skript unter Verwendung seines Dateinamens aus:
    ./myscript.sh>

    Hier muss ersetzt werden myscrtipt.sh mit Ihrem Skriptnamen.

    3) Schreiben Sie ein Shell-Skript, das techcodeview.com auf dem Terminal ausgibt.

    Erstellen Sie einen Skriptnamen „myscript.sh“ (wir verwenden „ Weil ` Editor, Sie können einen beliebigen Editor auswählen)

    vim myscript.sh>

    #!/bin/bash
    # Dieses Skript druckt techcodeview.com auf dem Terminal
    echo techcodeview.com

    Namen drucken

    Namen drucken

    Wir machen unser Skript mit „chmod +x“ ausführbar, führen es dann mit „./myscipt.sh“ aus und erhalten die gewünschte Ausgabe techcodeview.com.

    4) Erklären Sie den Zweck des Echo-Befehls beim Shell-Scripting.

    Der Echo-Befehl dient der Anzeige von Texten oder Variablen auf dem Terminal. Es wird häufig zum Drucken von Nachrichten, Variablenwerten und zum Generieren von Programmausgaben verwendet.

    434

    Echo-Befehl

    In diesem Beispiel haben wir „echo“ direkt auf dem Terminal ausgeführt, da es innerhalb des Shell-Skripts genauso funktioniert.

    5) Wie kann man einer Variablen in einem Shell-Skript einen Wert zuweisen?

    Variablen werden Werte mit dem Zuweisungsoperator = zugewiesen.

    Zum Beispiel:

    #!/bin/bash
    # Einer Variablen einen Wert zuweisen
    Name=Jayesh
    Alter=21
    echo $name $age

    Erläuterung:

    • Der Namensvariablen wird der Wert Jayesh zugewiesen.
    • Der Altersvariable wird der Wert 21 zugewiesen.
    • echo wird zum Drucken verwendet und `$name` `$age` wird verwendet, um den in den Variablen gespeicherten Wert aufzurufen.

    435

    6) Schreiben Sie ein Shell-Skript, das den Namen eines Benutzers als Eingabe verwendet und ihn begrüßt.

    Erstellen Sie einen Skriptnamen „example.sh“.

    #!/bin/bash
    # Fragen Sie den Benutzer nach seinem Namen
    echo Wie heißt du?
    Namen lesen
    # Begrüßen Sie den Benutzer
    echo Hallo, $name! Freut mich, Sie kennenzulernen.

    Erläuterung:

    • #!/bin/bash: Das ist die Shebang-Zeile. Es weist das System an, den Bash-Interpreter zum Ausführen des Skripts zu verwenden.
    • # Fragen Sie den Benutzer nach seinem Namen: Dies ist ein Kommentar. Es bietet Kontext zum kommenden Code. Kommentare werden vom Interpreter ignoriert.
    • echo Wie heißt du?: Der echo-Befehl wird verwendet, um den Text in doppelten Anführungszeichen auf dem Terminal anzuzeigen.
    • Lesename: Der Lesebefehl wartet auf die Eingabe von Text durch den Benutzer und speichert ihn im Variablennamen.
    • echo Hallo, $name! Freut mich, Sie kennenzulernen.: Diese Zeile verwendet den echo-Befehl, um eine Begrüßungsnachricht zu drucken, die den Wert der Namensvariablen enthält, der aus der Benutzereingabe erfasst wurde.

    436

    7) Wie fügt man einem Shell-Skript Kommentare hinzu?

    Kommentare im Shell-Scripting werden verwendet, um Erklärungen oder Kontext zum Code bereitzustellen. Sie werden vom Interpreter ignoriert und sind nur für Menschen gedacht, die das Skript lesen. Mit dem #-Symbol können Sie Kommentare hinzufügen.

    #!/bin/bash
    # Dies ist ein Kommentar, der den Zweck des Skripts erläutert
    echo gfg

    8) Erstellen Sie ein Shell-Skript, das prüft, ob eine Datei im aktuellen Verzeichnis vorhanden ist.

    Hier ist ein Skript, das prüft, ob eine Datei namens example.txt im aktuellen Verzeichnis vorhanden ist:

    #!/bin/bash
    file=example.txt
    # Überprüfen Sie, ob die Datei vorhanden ist
    if [ -e $file ]; Dann
    echo Datei existiert: $file
    anders
    echo Datei nicht gefunden: $file
    Sei

    Erläuterung:

    1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
    2. file=example.txt: Diese Zeile definiert die Variablendatei und weist ihr den Wert example.txt zu. Sie können dies durch den Namen der Datei ersetzen, nach der Sie suchen möchten.
    3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Die Bedingung [ -e $file ] prüft, ob die durch den Wert der Dateivariablen angegebene Datei existiert. Das Flag -e wird verwendet, um zu prüfen, ob eine Datei vorhanden ist.
    4. echo Datei existiert: $datei: Wenn die Bedingung wahr ist (d. h. die Datei existiert), gibt diese Zeile eine Meldung aus, die angibt, dass die Datei existiert, zusammen mit dem Namen der Datei.
    5. else: Wenn die Bedingung falsch ist (d. h. die Datei existiert nicht), führt das Skript den Code unter dem else-Zweig aus.
    6. echo Datei nicht gefunden: $datei: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde, zusammen mit dem Namen der Datei.
    7. fi: Diese Zeile markiert das Ende der if-Anweisung.
    Datei wird gefunden

    Datei wird gefunden

    9) Was ist der Unterschied zwischen einfachen Anführungszeichen (‘) und doppelten Anführungszeichen () beim Shell-Scripting?

    Einfache Anführungszeichen (‘) und doppelte Anführungszeichen () werden zum Einschließen von Zeichenfolgen in Shell-Skripten verwendet, haben jedoch unterschiedliche Verhaltensweisen:

    • Einfache Anführungszeichen: Alles zwischen einfachen Anführungszeichen wird als Literalzeichenfolge behandelt. Variablennamen und die meisten Sonderzeichen werden nicht erweitert.
    • Doppelte Anführungszeichen: Variablen und bestimmte Sonderzeichen in doppelten Anführungszeichen werden erweitert. Der Inhalt unterliegt der Variablenersetzung und der Befehlsersetzung.

    #!/bin/bash

    abcd=Hallo
    echo ‚$abcd‘ # Ausgabe: $abcd
    echo $abcd # Ausgabe: Hallo

    10) Wie können Sie Befehlszeilenargumente in einem Shell-Skript verwenden?

    Kommandozeilenargumente sind Werte, die einem Skript bei seiner Ausführung bereitgestellt werden. Auf sie kann innerhalb des Skripts über spezielle Variablen wie $1, $2 usw. zugegriffen werden, wobei $1 das erste Argument, $2 das zweite Argument usw. darstellt.

    Zum Beispiel: Wenn unser Skriptname in „example.sh“ steht

    #!/bin/bash

    echo Skriptname: $0
    echo Erstes Argument: $1
    echo Zweites Argument: $2

    Wenn wir das Skript mit „.example.sh hello_1 hello_2“ ausführen, wird Folgendes ausgegeben:

    CLI-Argumente

    CLI-Argumente

    11) Wie verwenden Sie die for-Schleife, um eine Liste von Werten zu durchlaufen?

    Erstellen Sie einen Skriptnamen „example.sh“.

    #!/bin/bash

    Früchte = (Apfel, Banane, Kirsche, Dattel)
    für Obst in ${fruits[@]}; Tun
    echo Aktuelle Frucht: $fruit
    Erledigt

    Erläuterung:

    Die Zeile „fruits=“ erstellt ein Array mit dem Namen „Früchte“ mit vier Elementen: Apfel, Banane, Kirsche und Dattel.

    • für Obst in ${fruits[@]}; do: Diese Zeile startet eine for-Schleife. Hier ist, was jeder Teil bedeutet:
    • für Obst: Dies deklariert eine Schleifenvariable namens Obst. In jeder Iteration der Schleife speichert Fruit den Wert des aktuellen Elements aus dem Fruit-Array.
    • ${fruits[@]}: Dies ist eine Array-Erweiterung, die alle Elemente aus dem Fruit-Array übernimmt. Die ${…}-Syntax stellt sicher, dass jedes Element als separates Element behandelt wird.
    • do: Dieses Schlüsselwort markiert den Anfang des Schleifenkörpers.
    • echo Aktuelle Frucht: $fruit: Innerhalb der Schleife verwendet diese Zeile den Echo-Befehl, um den aktuellen Wert der Schleifenvariablen Frucht anzuzeigen. Für jede Frucht im Array wird eine Meldung wie Aktuelle Frucht: Apfel ausgegeben.
    • done: Dieses Schlüsselwort markiert das Ende des Schleifenkörpers. Es teilt dem Skript mit, dass die Schleife beendet ist.
    for-Schleife

    for-Schleife

    12) Schreiben Sie ein Shell-Skript, das mithilfe einer Schleife die Summe der ganzen Zahlen von 1 bis N berechnet.

    Erstellen Sie einen Skriptnamen „example.sh“.

    #!/bin/bash

    echo Geben Sie eine Zahl (N) ein:
    lies N
    Summe=0
    for (( i=1; i<=$N; i++ )); Tun
    sum=$((sum + i))
    Erledigt
    echo Die Summe der ganzen Zahlen von 1 bis $N ist: $sum

    Erläuterung:
    Das Skript fordert Sie zunächst dazu auf, mithilfe von „read“ eine Zahl (N) einzugeben. Diese Zahl bestimmt, wie oft die Schleife ausgeführt wird.

    1. Die Variablensumme wird auf 0 initialisiert. Diese Variable verfolgt die Summe der Ganzzahlen.
    2. Die for-Schleife beginnt mit for (( i=1; i<=$N; i++ )). Diese Schleifenstruktur wird verwendet, um eine Reihe von Aktionen eine bestimmte Anzahl von Malen zu wiederholen, in diesem Fall von 1 bis zum Wert N.
    3. Innerhalb der Schleife passieren folgende Dinge:
      • i=1 setzt die Schleifenvariable i zu Beginn jeder Iteration auf 1.
      • Die Schleifenbedingung i<=$N prüft, ob i immer noch kleiner oder gleich der angegebenen Zahl N ist.
      • Wenn die Bedingung wahr ist, wird der Schleifenkörper ausgeführt.
      • sum=$((sum + i)) berechnet den neuen Wert von sum, indem der aktuelle Wert von i dazu addiert wird. Dadurch werden die ganzen Zahlen von 1 bis zum aktuellen i-Wert addiert.
    4. Nach jeder Iteration erhöht i++ den Wert von i um 1.
    5. Die Schleife läuft weiter, bis die Bedingung i<=$N falsch wird (wenn i größer als N wird).
    6. Sobald die Schleife beendet ist, zeigt das Skript die Summe der ganzen Zahlen von 1 bis zur eingegebenen Zahl N an.

    439

    13) Erstellen Sie ein Skript, das nach einem bestimmten Wort in einer Datei sucht und dessen Vorkommen zählt.

    Erstellen Sie einen Skriptnamen „word_count.sh“.

    #!/bin/bash

    echo Geben Sie das Wort ein, nach dem gesucht werden soll:
    Zielwort lesen
    echo Geben Sie den Dateinamen ein:
    Dateinamen lesen
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Das Wort „$target_word“ kommt $count mal in „$filename“ vor.

    Erläuterung:

    • echo Geben Sie das zu suchende Wort ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, ein Wort einzugeben, nach dem er in einer Datei suchen möchte.
    • read target_word: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens target_word.
    • echo Geben Sie den Dateinamen ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, den Namen der Datei einzugeben, in der er suchen möchte.
    • Dateinamen lesen: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens Dateiname.
    • count=$(grep -o -w $target_word $filename | wc -l): Diese Zeile erledigt die Hauptarbeit des Skripts. Lassen Sie es uns weiter aufschlüsseln:
      • grep -o -w $target_word $filename: Dieser Teil des Befehls sucht nach Vorkommen des target_word im angegebenen Dateinamen. Die Optionen -o und -w stellen sicher, dass nur Ganzwortübereinstimmungen gezählt werden.
      • |: Dies ist eine Pipe, die die Ausgabe des vorherigen Befehls übernimmt und als Eingabe an den nächsten Befehl sendet.
      • wc -l: Dieser Teil des Befehls verwendet den Befehl wc, um die Anzahl der Zeilen in der Eingabe zu zählen. Die Option -l zählt gezielt die Zeilen.
      • Der gesamte Befehl berechnet die Anzahl der Vorkommen des Zielworts in der Datei und weist diese Anzahl der Variablen coun zu

    441

    14) Erklären Sie die Unterschiede zwischen Standardausgabe (stdout) und Standardfehler (stderr).

    Der Hauptunterschied zwischen Standardausgabe (stdout) und Standardfehler (stderr) ist wie folgt:

    • Standardausgabe (stdout): Dies ist der Standardausgabestream, in den die reguläre Ausgabe eines Befehls geht. Es wird standardmäßig auf dem Terminal angezeigt. Sie können es mit> in eine Datei umleiten.
    • Standardfehler (stderr): Dies ist der Ausgabestream für Fehlermeldungen und Warnungen. Es wird standardmäßig auch auf dem Terminal angezeigt. Sie können es mit 2> in eine Datei umleiten.

    15) Erklären Sie das Konzept bedingter Anweisungen im Shell-Scripting.

    Bedingte Anweisungen im Shell-Scripting ermöglichen es uns, Entscheidungen zu treffen und den Ablauf unseres Skripts auf der Grundlage bestimmter Bedingungen zu steuern. Sie ermöglichen unserem Skript, unterschiedliche Befehlssätze auszuführen, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist. Die primären bedingten Anweisungen beim Shell-Scripting sind die if-Anweisung, die elif-Anweisung (optional) und die else-Anweisung (optional).

    Hier ist die Grundstruktur einer bedingten Anweisung im Shell-Scripting:

    if [ Bedingung ]; Dann
    # Befehle, die ausgeführt werden sollen, wenn die Bedingung wahr ist
    elif [ another_condition ]; Dann
    # Befehle, die ausgeführt werden sollen, wenn another_condition wahr ist (optional)
    anders
    # Befehle, die ausgeführt werden sollen, wenn keine der Bedingungen wahr ist (optional)
    Sei

    Erläuterung:

    • [ Bedingung ] = Befehl, der die Bedingung auswertet und einen Exit-Status „wahr“ (0) oder „falsch“ (ungleich Null) zurückgibt.
    • then = Es handelt sich um ein Schlüsselwort, das angibt, dass die darauf folgenden Befehle ausgeführt werden, wenn die Bedingung „true“ ergibt.
    • elif = (Abkürzung für else if) Dies ist ein Abschnitt, der es uns ermöglicht, zusätzliche zu überprüfende Bedingungen anzugeben.
    • else = es ist ein Abschnitt, der Befehle enthält, die ausgeführt werden, wenn keine der Bedingungen wahr ist.
    • fi = Es ist ein Schlüsselwort, das das Ende des bedingten Blocks markiert.

    16) Wie liest man Zeilen aus einer Datei in einem Shell-Skript?

    Zu Zeilen lesen Aus einer Datei innerhalb eines Shell-Skripts können wir verschiedene Methoden verwenden, aber ein gängiger Ansatz ist die Verwendung einer While-Schleife in Kombination mit dem Lesebefehl. So können wir es machen:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Überprüfen Sie, ob die Datei vorhanden ist
    if [ -e $file ]; Dann
    while IFS= read -r line; Tun
    echo Zeile gelesen: $line
    # Fügen Sie hier Ihre Verarbeitungslogik hinzu
    erledigt <$file
    anders
    echo Datei nicht gefunden: $file
    Sei

    Erläuterung:

    1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
    2. file=/home/jayeshkumar/jayesh.txt: Diese Zeile definiert die Variablendatei und weist den vollständigen Pfad zur Datei jayesh.txt im Verzeichnis /home/jayeshkumar zu. Ändern Sie diesen Pfad so, dass er mit dem tatsächlichen Pfad der Datei übereinstimmt, die Sie lesen möchten.
    3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Es prüft, ob die durch die Variable $file angegebene Datei existiert. Das Flag -e prüft, ob eine Datei vorhanden ist.
    4. while IFS= read -r line; do: Diese Zeile initiiert eine While-Schleife, die Zeilen aus der Datei liest.
      • IFS=: Das IFS (Internal Field Separator) wird auf einen leeren Wert gesetzt, um führende und nachfolgende Leerzeichen beizubehalten.
      • read -r line: Dies liest die aktuelle Zeile aus der Datei und speichert sie in der Variablen line.
    5. echo Zeile gelesen: $line: Diese Zeile gibt den Inhalt der Zeile aus, die aus der Datei gelesen wurde. Die Variable $line enthält den Inhalt der aktuellen Zeile.
    6. # Fügen Sie hier Ihre Verarbeitungslogik hinzu: Dies ist ein Platzhalterkommentar, in dem Sie Ihre eigene Logik zur Verarbeitung jeder Zeile hinzufügen können. Beispielsweise können Sie die Zeile analysieren, Informationen extrahieren oder bestimmte Aktionen basierend auf dem Inhalt ausführen.
    7. done <$file: Dies markiert das Ende der while-Schleife. Das < $file leitet den Inhalt der Datei um, damit er von der Schleife gelesen werden kann.
    8. else: Wenn die Datei nicht existiert (die Bedingung in der if-Anweisung ist falsch), führt das Skript den Code unter dem else-Zweig aus.
    9. echo Datei nicht gefunden: $file: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde.
    10. fi: Diese Zeile markiert das Ende der if-Anweisung.
    Datei lesen

    Datei lesen

    Hier haben wir „“ verwendet pwd ` Befehl, um den Pfad des aktuellen Verzeichnisses abzurufen.

    17) Schreiben Sie eine Funktion in ein Shell-Skript, die die Fakultät einer bestimmten Zahl berechnet.

    Hier ist das Skript, dasBerechnen Sie die Fakultäteiner gegebenen Zahl.

    #!/bin/bash
    # Definieren Sie eine Funktion zur Berechnung der Fakultät
    berechne_faktorial() {
    num=$1
    Tatsache=1
    for ((i=1; i<=num; i++)); Tun
    fact=$((fact * i))
    Erledigt
    echo $fact
    }
    # Fordern Sie den Benutzer auf, eine Nummer einzugeben
    echo Geben Sie eine Zahl ein:
    lese input_num
    # Rufen Sie die Funktion „calcure_factorial“ mit der Eingabenummer auf
    factial_result=$(calculate_factorial $input_num)
    # Zeigen Sie das faktorielle Ergebnis an
    echo Factorial von $input_num ist: $factorial_result

    Erläuterung:

    1. Das Skript beginnt mit der Shebang-Zeile #!/bin/bash, um den Interpreter anzugeben.
    2. berechne_faktorial() ist als Funktion definiert. Es benötigt ein Argument, num, das die Zahl ist, für die die Fakultät berechnet werden muss.
    3. Innerhalb der Funktion wird fact auf 1 initialisiert. Diese Variable speichert das Fakultätsergebnis.
    4. Die for-Schleife iteriert von 1 bis zur angegebenen Zahl (num). In jeder Iteration multipliziert es den aktuellen Wert von fact mit dem Schleifenindex i.
    5. Nach Abschluss der Schleife enthält die Faktenvariable die berechnete Fakultät.
    6. Das Skript fordert den Benutzer mit „read“ zur Eingabe einer Zahl auf.
    7. Die Funktion „calcure_factorial“ wird mit der vom Benutzer angegebenen Zahl aufgerufen und das Ergebnis wird in der Variablen „factorial_result“ gespeichert.
    8. Abschließend zeigt das Skript das berechnete Fakultätsergebnis an.
    Fakultät

    Fakultät

    18) Wie gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um?

    In einem Shell-Skript können Sie Signale wie Strg+C (auch bekannt als SIGINT) mit dem Trap-Befehl verarbeiten. Strg+C generiert ein SIGINT-Signal, wenn der Benutzer es drückt, um das laufende Skript oder Programm zu unterbrechen. Mithilfe des Trap-Befehls können Sie Aktionen festlegen, die ausgeführt werden sollen, wenn ein bestimmtes Signal empfangen wird. So gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um:

    #!/bin/bash
    Aufräumen() {
    echo Skript unterbrochen. Bereinigung wird durchgeführt…
    # Fügen Sie hier Ihre Bereinigungsaktionen hinzu
    Ausgang 1
    }
    # Richten Sie eine Falle ein, um die Bereinigungsfunktion aufzurufen, wenn Strg+C (SIGINT) empfangen wird
    Fallenbereinigung SIGINT
    # Rest Ihres Skripts
    echo Laufen…
    Schlaf 10
    echo Fertig.

    Der Umgang mit Signalen ist wichtig, um Skripte robust zu machen und sicherzustellen, dass sie unerwartete Unterbrechungen ordnungsgemäß verarbeiten. Sie können die Bereinigungsfunktion an Ihre spezifischen Anforderungen anpassen, z. B. Dateien schließen, Prozesse stoppen oder Informationen protokollieren, bevor das Skript beendet wird.

    Erläuterung:

    1. #!/bin/bash: Diese Shebang-Zeile gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll.
    2. cleanup() { … }: Dies definiert eine Funktion namens cleanup. In diese Funktion können Sie alle Aktionen einschließen, die ausgeführt werden müssen, wenn das Skript unterbrochen wird, z. B. das Schließen von Dateien, das Freigeben von Ressourcen oder das Durchführen anderer Bereinigungsaufgaben.
    3. trap cleanup SIGINT: Der trap-Befehl wird zum Einrichten eines Signalhandlers verwendet. In diesem Fall wird angegeben, dass die Bereinigungsfunktion ausgeführt werden soll, wenn das SIGINT-Signal (Strg+C) empfangen wird.
    4. echo Running…, sleep 10, echo Finished.: Dies sind nur Beispielbefehle, um die Ausführung eines Skripts zu simulieren.

    446

    19) Erstellen Sie ein Skript, das nach doppelten Zeilen in einer Textdatei sucht und diese entfernt.

    Hier ist unser Linux-Skript, in dem wir doppelte Zeilen aus einer Textdatei entfernen.

    #!/bin/bash
    input_file=input.txt
    Ausgabedatei=Ausgabe.txt
    $input_file | sortieren uniq> $output_file
    echo Doppelte Zeilen erfolgreich entfernt.

    Erläuterung:

    1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    2. Die Variable input_file wird auf den Namen der Eingabedatei gesetzt, die doppelte Zeilen enthält (ändern Sie diesen in Ihren tatsächlichen Namen der Eingabedatei).
    3. Die Variable „output_file“ wird auf den Namen der Ausgabedatei gesetzt, aus der die Duplikate entfernt werden (ändern Sie diesen in den gewünschten Namen der Ausgabedatei).
    4. Das Skript verwendet den Sortierbefehl, um die Zeilen in der Eingabedatei zu sortieren. Durch das Sortieren der Zeilen wird sichergestellt, dass doppelte Zeilen gruppiert werden.
    5. Die sortierten Zeilen werden dann durch den Befehl uniq geleitet, der aufeinanderfolgende doppelte Zeilen entfernt. Die Ausgabe dieses Prozesses wird in die Ausgabedatei umgeleitet.
    6. Nachdem die Duplikate entfernt wurden, gibt das Skript eine Erfolgsmeldung aus.
    Entfernen doppelter Zeilen

    Entfernen doppelter Zeilen

    Hier verwenden wir „ Katze ` um den Text in der Textdatei anzuzeigen.

    20) Schreiben Sie ein Skript, das ein sicheres Zufallspasswort generiert.

    Hier ist unser Skript zum Generieren eines sicheren Zufallspassworts.

    #!/bin/bash
    # Funktion zum Generieren eines zufälligen Passworts
    generiere Passwort() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Rufen Sie die Funktion auf und speichern Sie das generierte Passwort
    passwort=$(generate_password)
    echo Generiertes Passwort: $password

    Hinweis: Der Benutzer kann die Länge seines Passworts entsprechend ändern, indem er die Zahl „12“ ersetzt.

    Erläuterung:

    1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass es mit der Bash-Shell interpretiert werden soll.
    2. Die Funktion „generate_password“ ist so definiert, dass sie ein zufälliges Passwort generiert. So funktioniert das:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • falten -w 12 unterteilt die gefilterten Zufallsdaten in Zeilen mit einer Breite von jeweils 12 Zeichen.
      • head -n 1 wählt die erste Zeile aus und gibt uns effektiv eine zufällige Folge von Zeichen der Länge 12.
    3. Der Variable „password“ wird das Ergebnis des Aufrufs der Funktion „generate_password“ zugewiesen.
    4. Abschließend wird das generierte Passwort mittels Echo angezeigt.

    448

    21) Schreiben Sie ein Shell-Skript, das die Gesamtgröße aller Dateien in einem Verzeichnis berechnet.

    Hier ist ein Shell-Skript zur Berechnung der Gesamtgröße aller Dateien in einem Verzeichnis.

    #!/bin/bash
    Verzeichnis=/Pfad/zu/Ihrem/Verzeichnis
    total_size=$(du -csh $directory | grep total | awk ‚{print $1}‘)
    echo Gesamtgröße der Dateien in $directory: $total_size

    Erläuterung:

    1. Das Skript beginnt mit dem Befehl #!/bin/bash, der darauf hinweist, dass es mithilfe der Bash-Shell interpretiert werden soll.
    2. Die Verzeichnisvariable wird auf den Pfad des Verzeichnisses gesetzt, für das Sie die Gesamtdateigröße berechnen möchten. Ersetzen Sie /path/to/your/directory durch den tatsächlichen Pfad.
    3. Der Befehl du wird verwendet, um die Dateispeichernutzung abzuschätzen. Die verwendeten Optionen sind:
      • -c: Erzeuge eine Gesamtsumme.
      • -s: Zeigt nur die Gesamtgröße des angegebenen Verzeichnisses an.
      • -h: Druckgrößen in einem für Menschen lesbaren Format (z. B. KB, MB, GB).
    4. Die Ausgabe von du wird an grep total weitergeleitet, um die Zeile herauszufiltern, die die Gesamtgröße enthält.
    5. awk „{print $1}“ wird verwendet, um das erste Feld (Gesamtgröße) aus der Zeile zu extrahieren.
    6. Die berechnete Gesamtgröße wird in der Variablen total_size gespeichert.
    7. Abschließend zeigt das Skript mithilfe von Echo die Gesamtgröße an.
    Gesamtgröße der Dateien

    Gesamtgröße der Dateien

    Hier haben wir „“ verwendet pwd ` Befehl, um den aktuellen Verzeichnispfad anzuzeigen.

    22) Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting.

    Besonderheit `if`Staiftement `elif`-Erklärung
    Zweck Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting. Stellt alternative Bedingungen bereit, um zu überprüfen, ob die anfängliche If-Bedingung falsch ist.
    Verwendung Wird für den Anfangszustand verwendet. Wird nach der anfänglichen if-Bedingung verwendet, um zusätzliche Bedingungen zu überprüfen.
    Anzahl der Blöcke Kann nur einen if-Block haben. Kann mehrere elif-Blöcke haben, aber nur einen else-Block (optional).
    Ausführung Führt den mit der if-Anweisung verknüpften Codeblock aus, wenn die Bedingung wahr ist. Wenn die Bedingung falsch ist, wird der else-Block (falls vorhanden) ausgeführt (optional). Überprüft jede Elif-Bedingung der Reihe nach. Wenn eine elif-Bedingung wahr ist, wird der entsprechende Codeblock ausgeführt und das Skript verlässt den gesamten bedingten Block. Wenn keine der elif-Bedingungen wahr ist, wird der else-Block (falls vorhanden) ausgeführt.
    Verschachtelte Strukturen Kann in anderen if-, elif- oder else-Blöcken verschachtelt werden. Kann nicht in einem anderen elif-Block verschachtelt werden, kann aber in einem if- oder else-Block verwendet werden.

    Lassen Sie es uns anhand eines Beispiels verstehen.

    #!/bin/bash
    Zahl=5
    if [ $number -gt 10 ]; Dann
    echo $number ist größer als 10
    anders
    echo $number ist nicht größer als 10
    Sei
    Echo ——–
    if [ $number -gt 10 ]; Dann
    echo $number ist größer als 10
    elif [ $number -eq 10 ]; Dann
    echo $number ist gleich 10
    anders
    echo $number ist kleiner als 10
    Sei

    Erläuterung:

    In diesem Beispiel prüft der erste if-Block, ob die Zahl größer als 10 ist. Wenn nicht, gibt er eine Meldung aus, die angibt, dass die Zahl nicht größer als 10 ist. Der zweite Block mit elif-Anweisungen prüft nacheinander mehrere Bedingungen, bis eine davon wahr ist. Da in diesem Fall der Wert von number 5 ist, lautet die Ausgabe:

    if_elif Unterschied

    if_elif Unterschied

    23) Wie nutzt man eine While-Schleife, um Befehle wiederholt auszuführen?

    Bei der Shell-Skripterstellung wird eine While-Schleife verwendet, um eine Reihe von Befehlen wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist. Die Schleife führt die Befehle so lange aus, bis die Bedingung falsch wird.

    Hier ist die grundlegende Syntax einer While-Schleife:

    while [ Bedingung ]; Tun
    # Auszuführende Befehle
    Erledigt

    Erläuterung:

    1. Die „while“-Schleife beginnt mit dem Schlüsselwort „while“, gefolgt von einer in eckigen Klammern eingeschlossenen Bedingung „[ ]“.
    2. Der Schleifenkörper, der die auszuführenden Befehle enthält, ist in die Schlüsselwörter „do“ und „done“ eingeschlossen.
    3. Die Schleife prüft zunächst die Bedingung. Wenn die Bedingung wahr ist, werden die Befehle im Schleifenkörper ausgeführt. Nachdem der Schleifenkörper ausgeführt wurde, wird die Bedingung erneut überprüft und der Vorgang wiederholt, bis die Bedingung falsch wird.

    Beispiel: Wenn wir Zahlen von 1 bis 5 drucken möchten

    #!/bin/bash
    Zähler=1
    while [ $counter -le 5 ]; Tun
    Echo-Nummer: $counter
    counter=$((counter + 1))
    Erledigt

    Erläuterung:

    • Die Zählervariable wird auf 1 gesetzt.
    • Die while-Schleife prüft, ob der Wert von counter kleiner oder gleich 5 ist. Solange diese Bedingung erfüllt ist, wird die Schleife weiter ausgeführt.
    • Innerhalb der Schleife wird der aktuelle Wert des Zählers mithilfe von Echo ausgegeben.
    • Der Zähler wird mit dem Ausdruck $((Zähler + 1)) um 1 erhöht.
    while-Schleife

    while-Schleife

    24) Erstellen Sie ein Shell-Skript, das alle leeren Dateien in einem Verzeichnis findet und auflistet.

    Shell-Skript, mit dem Sie mithilfe der Befehle „find“ und „stat“ alle leeren Dateien in einem Verzeichnis suchen und auflisten können:

    #!/bin/bash
    Verzeichnis=$1″
    if [ -z $directory ]; Dann
    Echo-Nutzung: $0
    Ausgang 1
    Sei

    Wenn [ ! -d $Verzeichnis ]; Dann
    echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
    Ausgang 1
    Sei
    echo Leere Dateien im $directory:
    finde $directory -type f -empty

    Erläuterung:

    1. ` #!/bin/bash „: Dies wird als Shebang bezeichnet und weist das Betriebssystem an, die Bash-Shell zum Interpretieren und Ausführen des Skripts zu verwenden.
    2. ` Verzeichnis=$1″ `: Diese Zeile weist der Variablen ` das erste Befehlszeilenargument (bezeichnet mit $1) zu Verzeichnis `.
    3. ` if [ -z $directory ]; Dann `: Diese Zeile startet eine if-Anweisung, die prüft, ob das ` Verzeichnis ` Variable ist leer (-z testet auf eine leere Zeichenfolge).
    4. ` Echo-Nutzung: $0 `: Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung aus, wobei ` 0 $ ` steht für den Namen des Skripts.
    5. ` Ausgang 1 `: Diese Zeile beendet das Skript mit dem Exit-Code ` 1 `, was auf einen Fehler hinweist.
    6. ` Sei `: Diese Zeile markiert das Ende des ` Wenn ` Aussage.
    7. ` Wenn [ ! -d $Verzeichnis ]; Dann `: Dies startet eine weitere if-Anweisung, um zu prüfen, ob das angegebene Verzeichnis existiert (` -D ` testet für ein Verzeichnis).
    8. ` echo Fehler: „$directory“ ist kein gültiges Verzeichnis. `: Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
    9. ` Ausgang 1 `: Beendet das Skript mit dem Exit-Code ` 1 `.
    10. ` Sei `: Markiert das Ende des zweiten ` wenn` Stellungnahme.
    11. ` echo Leere Dateien im $directory: `: Wenn bisher alles gültig ist, gibt diese Zeile eine Meldung aus, die angibt, dass das Skript leere Dateien im angegebenen Verzeichnis auflistet.
    12. ` finde $directory -type f -empty `: Diese Zeile verwendet das ` finden ` Befehl zum Suchen nach leeren Dateien (` -leer `) vom Typ reguläre Dateien (` -Typ f `) im angegebenen Verzeichnis. Anschließend werden diese leeren Dateien aufgelistet.
    Leere Dateien finden

    Leere Dateien finden

    Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/ verwendet

    25) Was ist der Zweck des Lesebefehls beim Shell-Scripting?

    Mit dem Lesebefehl beim Shell-Scripting fragt das Skript Sie nach Informationen. Es ist, als würde Ihnen ein Computer eine Frage stellen und auf Ihre Antwort warten. Dies ist nützlich für Skripte, bei denen Sie etwas eingeben müssen oder wenn das Skript mit Informationen aus Dateien arbeiten muss. Der Lesebefehl hilft dem Skript, anzuhalten und auf Ihre Eingabe zu warten. Anschließend kann es diese Informationen verwenden, um weitere Aufgaben im Skript auszuführen.

    Syntax des Lesebefehls:

    read variable_name>

    Beispiel : Wenn wir den Namen als Eingabe vom Benutzer verwenden möchten, um ihn zu drucken.

    #!/bin/bash
    echo Bitte geben Sie Ihren Namen ein:
    Namen lesen
    echo Hallo, $name!

    453

    lies nam

    Zusammenfassend lässt sich sagen, dass der Lesebefehl verwendet wird, um Benutzereingaben oder Daten aus Dateien in Shell-Skripten zu erfassen, wodurch die Skripte interaktiver und vielseitiger werden.

    26) Schreiben Sie ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

    Hier ist ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

    #!/bin/bash
    Verzeichnis=$1″
    if [ -z $directory ]; Dann
    Echo-Nutzung: $0
    Ausgang 1
    Sei

    Wenn [ ! -d $Verzeichnis ]; Dann

    echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
    Ausgang 1
    Sei

    cd $verzeichnis || Ausgang 1

    für Datei in *; Tun
    if [ -f $file ]; Dann
    newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘)
    [ $file != $newname ] && mv $file $newname
    Sei
    Erledigt

    Erläuterung:

    1. #!/bin/bash : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    2. Verzeichnis=$1″ : Diese Zeile weist das erste Befehlszeilenargument dem Variablenverzeichnis zu.
    3. if [ -z $directory ]; Dann : Diese Zeile prüft, ob die Verzeichnisvariable leer ist (kein Argument angegeben, wenn das Skript ausgeführt wird).
    4. Echo-Nutzung: $0 : Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung mit dem Namen des Skripts ($0) aus.
    5. Ausgang 1 : Diese Zeile beendet das Skript mit dem Exit-Code 1, was darauf hinweist, dass ein Fehler aufgetreten ist.
    6. F i: Dies markiert das Ende der ersten if-Anweisung.
    7. Wenn [ ! -d $Verzeichnis ]; Dann : Diese Zeile prüft, ob das angegebene Verzeichnis nicht existiert (-d testet ein Verzeichnis).
    8. echo Fehler: „$directory“ ist kein gültiges Verzeichnis. : Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
    9. Ausgang 1 : Beendet das Skript mit dem Exit-Code 1.
    10. Sei : Markiert das Ende der zweiten if-Anweisung.
    11. cd $verzeichnis || Ausgang 1 : Ändert das aktuelle Arbeitsverzeichnis in das angegebene Verzeichnis. Wenn der Verzeichniswechsel fehlschlägt (z. B. Verzeichnis nicht vorhanden), wird das Skript mit einem Fehlercode beendet.
    12. für Datei in *; Tun: ICH für Datei in *; Tun: löst eine Schleife aus, die alle Elemente im aktuellen Verzeichnis durchläuft (* entspricht allen Dateinamen).
    13. if [ -f $file ]; Dann : Überprüft, ob das aktuelle Schleifeniterationselement eine reguläre Datei ist (-f testet auf eine reguläre Datei).
    14. newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘) : Wandelt den aktuellen Dateinamen ($file) mit dem Befehl tr in Kleinbuchstaben um und speichert das Ergebnis in der Variablen newname.
    15. [ $file != $newname ] && mv $file $newname : Vergleicht den ursprünglichen Dateinamen mit dem neuen Dateinamen in Kleinbuchstaben. Wenn sie unterschiedlich sind, wird die Datei mit dem Befehl mv umbenannt.
    16. Sei : Markiert das Ende der inneren if-Anweisung.
    17. Erledigt : Markiert das Ende der Schleife.

    454

    Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/test verwendet

    27) Wie können Sie arithmetische Operationen innerhalb eines Shell-Skripts verwenden?

    Arithmetische Operationen können innerhalb eines Shell-Skripts mithilfe verschiedener integrierter Methoden ausgeführt werden. Die Shell bietet Mechanismen für einfache arithmetische Berechnungen mithilfe der arithmetischen Erweiterung wie:

    1. Arithmetische Erweiterung ($((…)))
    2. Verwenden des expr-Befehls
    3. Verwenden des let-Befehls

    Hier ist unser Shell-Skript, das alle drei Methoden für arithmetische Operationen erklärt.

    #!/bin/bash
    num1=10
    num2=5

    #Arithmetische Erweiterung ($((…)))

    Ergebnis=$((num1 + num2))
    echo Summe: $result

    #Verwenden des expr-Befehls

    sum=$(expr $num1 + $num2)
    echo Summe: $sum

    #Verwenden des let-Befehls

    sei sum = num1 + num2
    echo Summe: $sum

    Erläuterung:

    1. `#!/bin/bash` : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    2. `num1=10` und ` num2=5` : Diese Zeilen weisen den Variablen ` die Werte 10 und 5 zu num1 ` und ` num2 ` bzw.
    3. `#Arithmetische Erweiterung ($((…)))` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die arithmetische Erweiterung demonstriert.
    4. `result=$((num1 + num2))` : Diese Zeile verwendet eine arithmetische Erweiterung, um die Summe von ` zu berechnen num1 ` und ` num2 ` und speichert das Ergebnis im ` Ergebnis ` variabel.
    5. „echo Summe: $result“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Ergebnis ` variabel.
    6. `#Verwenden des expr-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert Ausdruck ` Befehl für arithmetische Operationen.
    7. `sum=$(expr $num1 + $num2)` : Diese Zeile verwendet das ` Ausdruck ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und speichert das Ergebnis im ` Summe ` variabel. Beachten Sie, dass das ` Ausdruck Der Befehl ` erfordert Leerzeichen um die Operatoren.
    8. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
    9. `#Verwenden des let-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert lassen ` Befehl für arithmetische Operationen.
    10. `Lass Summe = num1 + num2″` : Diese Zeile verwendet das ` lassen ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und weist das Ergebnis dem ` zu Summe ` variabel. Das ` lassen Für den Befehl ` sind keine Leerzeichen um die Operatoren erforderlich.
    11. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
    Arithmetik

    Arithmetik

    28) Erstellen Sie ein Skript, das prüft, ob ein Netzwerkhost erreichbar ist.

    Hier ist ein einfaches Shell-Skript, das mithilfe des Ping-Befehls prüft, ob ein Netzwerkhost erreichbar ist:

    #!/bin/bash
    host=$1″
    if [ -z $host ]; Dann
    Echo-Nutzung: $0
    Ausgang 1
    Sei
    ping -c 4 $host

    wenn [ $? -eq 0 ]; Dann
    echo $host ist erreichbar.
    anders
    echo $host ist nicht erreichbar.
    Sei

    Erläuterung:

    1. Es nimmt einen Hostnamen oder eine IP-Adresse als Argument und prüft, ob das Argument angegeben wird.
    2. Wenn kein Argument angegeben wird, wird eine Nutzungsmeldung angezeigt und der Vorgang beendet.
    3. Es verwendet den Ping-Befehl mit der Option -c 4, um vier ICMP-Echo-Anfragen an den angegebenen Host zu senden.
    4. Nachdem der Ping-Befehl ausgeführt wurde, prüft er den Exit-Status ($?). Wenn der Exit-Status 0 ist, bedeutet dies, dass der Host erreichbar ist und das Skript eine Erfolgsmeldung ausgibt. Andernfalls wird eine Fehlermeldung ausgegeben.

    456

    Notiz : Wir müssen beim Ausführen des Skripts einen Hostnamen als Argument angeben. Hier haben wir google.com verwendet

    29) Schreiben Sie ein Shell-Skript, um das größte Element in einem Array zu finden:

    Hier ist ein Shell-Skript, um das größte Element in einem Array zu finden.

    #!/bin/bash
    # Deklarieren Sie ein Array
    array=(3 56 24 89 67)

    # Initialisieren Sie eine Variable, um den Maximalwert zu speichern, beginnend mit dem ersten Element

    max=${array[0]}

    # Durch das Array iterieren

    für num in ${array[@]}; Tun

    # Vergleichen Sie jedes Element mit dem aktuellen Maximum

    if ((num> max)); Dann
    max=$num
    Sei
    Erledigt

    # Drucken Sie den Maximalwert aus

    echo Das maximale Element im Array ist: $max

    Erläuterung:

    1. ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.
    2. ` array=(3 56 24 89 67) `: Das Array wird deklariert und mit Werten initialisiert.
    3. ` max=${array[0]} `: `max` wird mit dem ersten Element des Arrays initialisiert.
    4. ` für num in ${array[@]}; Tun „: Eine „for“-Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.
    5. ` if ((num> max)); Dann „: Eine „if“-Anweisung prüft, ob das aktuelle Element „num“ größer als das aktuelle Maximum „max“ ist.
    6. ` max=$num`: If`num ` ist größer als `max`, `max` wird mit dem Wert von num aktualisiert.
    7. ` Erledigt `: Die `for`-Schleife ist geschlossen.
    8. ` echo Das maximale Element im Array ist: $max `: Abschließend gibt das Skript den im Array gefundenen Maximalwert aus.
    461

    größte Zahl

    30) Schreiben Sie ein Skript, um die Summe der Elemente in einem Array zu berechnen.

    #!/bin/bash

    # Deklarieren Sie ein Array

    array=(1 65 22 19 94)

    # Initialisieren Sie eine Variable, um die Summe zu speichern

    Summe=0

    # Durchlaufen Sie das Array und fügen Sie jedes Element zur Summe hinzu

    für num in ${array[@]}; Tun
    am=$((am + am))
    Erledigt

    # Drucken Sie die Summe aus

    echo Die Summe der Elemente im Array ist: $sum

    Erläuterung:

    ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.

    ` array=(1 65 22 19 94) `: Das Array wird deklariert und mit Werten initialisiert.

    ` Summe=0 `:` Summe ` wird auf Null initialisiert, um die Summe der Elemente zu speichern.

    ` für num in ${array[@]}; Tun `: A` für Die Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.

    ` am=$((am + am)) `: Innerhalb der Schleife jedes Element ` Auf eins ` wird dem ` hinzugefügt Summe ` variabel.

    ` Erledigt `: Das ` für ` Schleife ist geschlossen.

    „echo Die Summe der Elemente im Array ist: $sum“: Schließlich gibt das Skript die Summe aller Elemente im Array aus.

    462

    Summe der Elemente

    Erfahren Sie mehr über Shell-Skripte

    Abschluss

    Wir alle wissen, dass Shell-Skripte sehr nützlich sind, um die Arbeitsproduktivität zu steigern und auch Zeit zu sparen. In diesem Artikel haben wir es also behandelt 30 sehr nützliche und am meisten betrügerische Beispiele für Shell-Skripte . Wir hoffen, dass diese vollständige Anleitung zum Beispiel für Shell-Skripte Ihnen hilft, alles über die Shell-Skripte zu verstehen.



    : Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung mit dem Namen des Skripts (

    Bei allen Linux-Distributionen ist das Shell-Skript wie ein Zauberstab, der den Prozess automatisiert, Benutzern Zeit spart und die Produktivität steigert. Dieses Tutorial zur SOLL-Skripterstellung stellt Ihnen mehr als 25 SOLL-Skripting-Beispiele vor.

    Aber bevor wir zum Thema übergehen Shell-Scripting Beispiele: Lassen Sie uns Shell-Skripte und die tatsächlichen Anwendungsfälle von Shell-Skripten verstehen.

    Was ist Shell-Skript?

    Nun, die Schale ist eine CLI ( Befehlszeileninterpreter ), das in einem Textfenster ausgeführt wird, in dem Benutzer Shell-Befehle verwalten und ausführen können. Andererseits wird der Prozess des Schreibens einer Reihe von Befehlen, die auf einem Linux-System ausgeführt werden sollen. Eine Datei, die solche Anweisungen enthält, wird als Bash-Skript bezeichnet.

    Verwendung von Shell-Skripten

    Im Folgenden sind einige häufige Verwendungszwecke von Shell Script aufgeführt:

    • Aufgabenautomatisierung – Es kann verwendet werden, um sich wiederholende Aufgaben wie regelmäßige Backups und Softwareinstallationsaufgaben zu automatisieren.
    • Anpassung - Man kann Shell-Skripte verwenden, um seine Befehlszeilenumgebung zu entwerfen und seine Aufgabe je nach Bedarf einfach auszuführen.
    • Dokumentenverwaltung - Die Shell-Skripte können auch zum Verwalten und Bearbeiten von Dateien und Verzeichnissen verwendet werden, beispielsweise zum Verschieben, Kopieren, Umbenennen oder Löschen von Dateien.

    Beispiele für Shell-Skripte unter Linux

    1) Was bedeutet das Shebang (#!) am Anfang eines Shell-Skripts?

    Der Mist (#!) am Anfang eines Skripts gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll. Es teilt dem System mit, welche Shell oder welcher Interpreter die Befehle des Skripts interpretieren soll.

    Zum Beispiel: Angenommen, wir haben ein Skript mit dem Namen myscript.sh geschrieben in der Bash-Shell:

    Mist

    Mist

    In diesem Beispiel:

    • Das #!/bin/bash am Anfang des Skripts gibt an, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    • Die Echo-Befehle werden zum Drucken von Nachrichten an das Terminal verwendet.

    2) Wie führt man ein Shell-Skript über die Befehlszeile aus?

    Um ein Shell-Skript über die Befehlszeile auszuführen, müssen wir die folgenden Schritte ausführen:

    • Stellen Sie sicher, dass die Skriptdatei über ausführbare Berechtigungen verfügt chmod-Befehl :
    chmod +x myscript.sh>
    • Führen Sie das Skript unter Verwendung seines Dateinamens aus:
    ./myscript.sh>

    Hier muss ersetzt werden myscrtipt.sh mit Ihrem Skriptnamen.

    3) Schreiben Sie ein Shell-Skript, das techcodeview.com auf dem Terminal ausgibt.

    Erstellen Sie einen Skriptnamen „myscript.sh“ (wir verwenden „ Weil ` Editor, Sie können einen beliebigen Editor auswählen)

    vim myscript.sh>

    #!/bin/bash
    # Dieses Skript druckt techcodeview.com auf dem Terminal
    echo techcodeview.com

    Namen drucken

    Namen drucken

    Wir machen unser Skript mit „chmod +x“ ausführbar, führen es dann mit „./myscipt.sh“ aus und erhalten die gewünschte Ausgabe techcodeview.com.

    4) Erklären Sie den Zweck des Echo-Befehls beim Shell-Scripting.

    Der Echo-Befehl dient der Anzeige von Texten oder Variablen auf dem Terminal. Es wird häufig zum Drucken von Nachrichten, Variablenwerten und zum Generieren von Programmausgaben verwendet.

    434

    Echo-Befehl

    In diesem Beispiel haben wir „echo“ direkt auf dem Terminal ausgeführt, da es innerhalb des Shell-Skripts genauso funktioniert.

    5) Wie kann man einer Variablen in einem Shell-Skript einen Wert zuweisen?

    Variablen werden Werte mit dem Zuweisungsoperator = zugewiesen.

    Zum Beispiel:

    #!/bin/bash
    # Einer Variablen einen Wert zuweisen
    Name=Jayesh
    Alter=21
    echo $name $age

    Erläuterung:

    • Der Namensvariablen wird der Wert Jayesh zugewiesen.
    • Der Altersvariable wird der Wert 21 zugewiesen.
    • echo wird zum Drucken verwendet und `$name` `$age` wird verwendet, um den in den Variablen gespeicherten Wert aufzurufen.

    435

    6) Schreiben Sie ein Shell-Skript, das den Namen eines Benutzers als Eingabe verwendet und ihn begrüßt.

    Erstellen Sie einen Skriptnamen „example.sh“.

    #!/bin/bash
    # Fragen Sie den Benutzer nach seinem Namen
    echo Wie heißt du?
    Namen lesen
    # Begrüßen Sie den Benutzer
    echo Hallo, $name! Freut mich, Sie kennenzulernen.

    Erläuterung:

    • #!/bin/bash: Das ist die Shebang-Zeile. Es weist das System an, den Bash-Interpreter zum Ausführen des Skripts zu verwenden.
    • # Fragen Sie den Benutzer nach seinem Namen: Dies ist ein Kommentar. Es bietet Kontext zum kommenden Code. Kommentare werden vom Interpreter ignoriert.
    • echo Wie heißt du?: Der echo-Befehl wird verwendet, um den Text in doppelten Anführungszeichen auf dem Terminal anzuzeigen.
    • Lesename: Der Lesebefehl wartet auf die Eingabe von Text durch den Benutzer und speichert ihn im Variablennamen.
    • echo Hallo, $name! Freut mich, Sie kennenzulernen.: Diese Zeile verwendet den echo-Befehl, um eine Begrüßungsnachricht zu drucken, die den Wert der Namensvariablen enthält, der aus der Benutzereingabe erfasst wurde.

    436

    7) Wie fügt man einem Shell-Skript Kommentare hinzu?

    Kommentare im Shell-Scripting werden verwendet, um Erklärungen oder Kontext zum Code bereitzustellen. Sie werden vom Interpreter ignoriert und sind nur für Menschen gedacht, die das Skript lesen. Mit dem #-Symbol können Sie Kommentare hinzufügen.

    #!/bin/bash
    # Dies ist ein Kommentar, der den Zweck des Skripts erläutert
    echo gfg

    8) Erstellen Sie ein Shell-Skript, das prüft, ob eine Datei im aktuellen Verzeichnis vorhanden ist.

    Hier ist ein Skript, das prüft, ob eine Datei namens example.txt im aktuellen Verzeichnis vorhanden ist:

    #!/bin/bash
    file=example.txt
    # Überprüfen Sie, ob die Datei vorhanden ist
    if [ -e $file ]; Dann
    echo Datei existiert: $file
    anders
    echo Datei nicht gefunden: $file
    Sei

    Erläuterung:

    1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
    2. file=example.txt: Diese Zeile definiert die Variablendatei und weist ihr den Wert example.txt zu. Sie können dies durch den Namen der Datei ersetzen, nach der Sie suchen möchten.
    3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Die Bedingung [ -e $file ] prüft, ob die durch den Wert der Dateivariablen angegebene Datei existiert. Das Flag -e wird verwendet, um zu prüfen, ob eine Datei vorhanden ist.
    4. echo Datei existiert: $datei: Wenn die Bedingung wahr ist (d. h. die Datei existiert), gibt diese Zeile eine Meldung aus, die angibt, dass die Datei existiert, zusammen mit dem Namen der Datei.
    5. else: Wenn die Bedingung falsch ist (d. h. die Datei existiert nicht), führt das Skript den Code unter dem else-Zweig aus.
    6. echo Datei nicht gefunden: $datei: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde, zusammen mit dem Namen der Datei.
    7. fi: Diese Zeile markiert das Ende der if-Anweisung.
    Datei wird gefunden

    Datei wird gefunden

    9) Was ist der Unterschied zwischen einfachen Anführungszeichen (‘) und doppelten Anführungszeichen () beim Shell-Scripting?

    Einfache Anführungszeichen (‘) und doppelte Anführungszeichen () werden zum Einschließen von Zeichenfolgen in Shell-Skripten verwendet, haben jedoch unterschiedliche Verhaltensweisen:

    • Einfache Anführungszeichen: Alles zwischen einfachen Anführungszeichen wird als Literalzeichenfolge behandelt. Variablennamen und die meisten Sonderzeichen werden nicht erweitert.
    • Doppelte Anführungszeichen: Variablen und bestimmte Sonderzeichen in doppelten Anführungszeichen werden erweitert. Der Inhalt unterliegt der Variablenersetzung und der Befehlsersetzung.

    #!/bin/bash

    abcd=Hallo
    echo ‚$abcd‘ # Ausgabe: $abcd
    echo $abcd # Ausgabe: Hallo

    10) Wie können Sie Befehlszeilenargumente in einem Shell-Skript verwenden?

    Kommandozeilenargumente sind Werte, die einem Skript bei seiner Ausführung bereitgestellt werden. Auf sie kann innerhalb des Skripts über spezielle Variablen wie $1, $2 usw. zugegriffen werden, wobei $1 das erste Argument, $2 das zweite Argument usw. darstellt.

    Zum Beispiel: Wenn unser Skriptname in „example.sh“ steht

    #!/bin/bash

    echo Skriptname: $0
    echo Erstes Argument: $1
    echo Zweites Argument: $2

    Wenn wir das Skript mit „.example.sh hello_1 hello_2“ ausführen, wird Folgendes ausgegeben:

    CLI-Argumente

    CLI-Argumente

    11) Wie verwenden Sie die for-Schleife, um eine Liste von Werten zu durchlaufen?

    Erstellen Sie einen Skriptnamen „example.sh“.

    #!/bin/bash

    Früchte = (Apfel, Banane, Kirsche, Dattel)
    für Obst in ${fruits[@]}; Tun
    echo Aktuelle Frucht: $fruit
    Erledigt

    Erläuterung:

    Die Zeile „fruits=“ erstellt ein Array mit dem Namen „Früchte“ mit vier Elementen: Apfel, Banane, Kirsche und Dattel.

    • für Obst in ${fruits[@]}; do: Diese Zeile startet eine for-Schleife. Hier ist, was jeder Teil bedeutet:
    • für Obst: Dies deklariert eine Schleifenvariable namens Obst. In jeder Iteration der Schleife speichert Fruit den Wert des aktuellen Elements aus dem Fruit-Array.
    • ${fruits[@]}: Dies ist eine Array-Erweiterung, die alle Elemente aus dem Fruit-Array übernimmt. Die ${…}-Syntax stellt sicher, dass jedes Element als separates Element behandelt wird.
    • do: Dieses Schlüsselwort markiert den Anfang des Schleifenkörpers.
    • echo Aktuelle Frucht: $fruit: Innerhalb der Schleife verwendet diese Zeile den Echo-Befehl, um den aktuellen Wert der Schleifenvariablen Frucht anzuzeigen. Für jede Frucht im Array wird eine Meldung wie Aktuelle Frucht: Apfel ausgegeben.
    • done: Dieses Schlüsselwort markiert das Ende des Schleifenkörpers. Es teilt dem Skript mit, dass die Schleife beendet ist.
    for-Schleife

    for-Schleife

    12) Schreiben Sie ein Shell-Skript, das mithilfe einer Schleife die Summe der ganzen Zahlen von 1 bis N berechnet.

    Erstellen Sie einen Skriptnamen „example.sh“.

    #!/bin/bash

    echo Geben Sie eine Zahl (N) ein:
    lies N
    Summe=0
    for (( i=1; i<=$N; i++ )); Tun
    sum=$((sum + i))
    Erledigt
    echo Die Summe der ganzen Zahlen von 1 bis $N ist: $sum

    Erläuterung:
    Das Skript fordert Sie zunächst dazu auf, mithilfe von „read“ eine Zahl (N) einzugeben. Diese Zahl bestimmt, wie oft die Schleife ausgeführt wird.

    1. Die Variablensumme wird auf 0 initialisiert. Diese Variable verfolgt die Summe der Ganzzahlen.
    2. Die for-Schleife beginnt mit for (( i=1; i<=$N; i++ )). Diese Schleifenstruktur wird verwendet, um eine Reihe von Aktionen eine bestimmte Anzahl von Malen zu wiederholen, in diesem Fall von 1 bis zum Wert N.
    3. Innerhalb der Schleife passieren folgende Dinge:
      • i=1 setzt die Schleifenvariable i zu Beginn jeder Iteration auf 1.
      • Die Schleifenbedingung i<=$N prüft, ob i immer noch kleiner oder gleich der angegebenen Zahl N ist.
      • Wenn die Bedingung wahr ist, wird der Schleifenkörper ausgeführt.
      • sum=$((sum + i)) berechnet den neuen Wert von sum, indem der aktuelle Wert von i dazu addiert wird. Dadurch werden die ganzen Zahlen von 1 bis zum aktuellen i-Wert addiert.
    4. Nach jeder Iteration erhöht i++ den Wert von i um 1.
    5. Die Schleife läuft weiter, bis die Bedingung i<=$N falsch wird (wenn i größer als N wird).
    6. Sobald die Schleife beendet ist, zeigt das Skript die Summe der ganzen Zahlen von 1 bis zur eingegebenen Zahl N an.

    439

    13) Erstellen Sie ein Skript, das nach einem bestimmten Wort in einer Datei sucht und dessen Vorkommen zählt.

    Erstellen Sie einen Skriptnamen „word_count.sh“.

    #!/bin/bash

    echo Geben Sie das Wort ein, nach dem gesucht werden soll:
    Zielwort lesen
    echo Geben Sie den Dateinamen ein:
    Dateinamen lesen
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Das Wort „$target_word“ kommt $count mal in „$filename“ vor.

    Erläuterung:

    • echo Geben Sie das zu suchende Wort ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, ein Wort einzugeben, nach dem er in einer Datei suchen möchte.
    • read target_word: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens target_word.
    • echo Geben Sie den Dateinamen ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, den Namen der Datei einzugeben, in der er suchen möchte.
    • Dateinamen lesen: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens Dateiname.
    • count=$(grep -o -w $target_word $filename | wc -l): Diese Zeile erledigt die Hauptarbeit des Skripts. Lassen Sie es uns weiter aufschlüsseln:
      • grep -o -w $target_word $filename: Dieser Teil des Befehls sucht nach Vorkommen des target_word im angegebenen Dateinamen. Die Optionen -o und -w stellen sicher, dass nur Ganzwortübereinstimmungen gezählt werden.
      • |: Dies ist eine Pipe, die die Ausgabe des vorherigen Befehls übernimmt und als Eingabe an den nächsten Befehl sendet.
      • wc -l: Dieser Teil des Befehls verwendet den Befehl wc, um die Anzahl der Zeilen in der Eingabe zu zählen. Die Option -l zählt gezielt die Zeilen.
      • Der gesamte Befehl berechnet die Anzahl der Vorkommen des Zielworts in der Datei und weist diese Anzahl der Variablen coun zu

    441

    14) Erklären Sie die Unterschiede zwischen Standardausgabe (stdout) und Standardfehler (stderr).

    Der Hauptunterschied zwischen Standardausgabe (stdout) und Standardfehler (stderr) ist wie folgt:

    • Standardausgabe (stdout): Dies ist der Standardausgabestream, in den die reguläre Ausgabe eines Befehls geht. Es wird standardmäßig auf dem Terminal angezeigt. Sie können es mit> in eine Datei umleiten.
    • Standardfehler (stderr): Dies ist der Ausgabestream für Fehlermeldungen und Warnungen. Es wird standardmäßig auch auf dem Terminal angezeigt. Sie können es mit 2> in eine Datei umleiten.

    15) Erklären Sie das Konzept bedingter Anweisungen im Shell-Scripting.

    Bedingte Anweisungen im Shell-Scripting ermöglichen es uns, Entscheidungen zu treffen und den Ablauf unseres Skripts auf der Grundlage bestimmter Bedingungen zu steuern. Sie ermöglichen unserem Skript, unterschiedliche Befehlssätze auszuführen, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist. Die primären bedingten Anweisungen beim Shell-Scripting sind die if-Anweisung, die elif-Anweisung (optional) und die else-Anweisung (optional).

    Hier ist die Grundstruktur einer bedingten Anweisung im Shell-Scripting:

    if [ Bedingung ]; Dann
    # Befehle, die ausgeführt werden sollen, wenn die Bedingung wahr ist
    elif [ another_condition ]; Dann
    # Befehle, die ausgeführt werden sollen, wenn another_condition wahr ist (optional)
    anders
    # Befehle, die ausgeführt werden sollen, wenn keine der Bedingungen wahr ist (optional)
    Sei

    Erläuterung:

    • [ Bedingung ] = Befehl, der die Bedingung auswertet und einen Exit-Status „wahr“ (0) oder „falsch“ (ungleich Null) zurückgibt.
    • then = Es handelt sich um ein Schlüsselwort, das angibt, dass die darauf folgenden Befehle ausgeführt werden, wenn die Bedingung „true“ ergibt.
    • elif = (Abkürzung für else if) Dies ist ein Abschnitt, der es uns ermöglicht, zusätzliche zu überprüfende Bedingungen anzugeben.
    • else = es ist ein Abschnitt, der Befehle enthält, die ausgeführt werden, wenn keine der Bedingungen wahr ist.
    • fi = Es ist ein Schlüsselwort, das das Ende des bedingten Blocks markiert.

    16) Wie liest man Zeilen aus einer Datei in einem Shell-Skript?

    Zu Zeilen lesen Aus einer Datei innerhalb eines Shell-Skripts können wir verschiedene Methoden verwenden, aber ein gängiger Ansatz ist die Verwendung einer While-Schleife in Kombination mit dem Lesebefehl. So können wir es machen:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Überprüfen Sie, ob die Datei vorhanden ist
    if [ -e $file ]; Dann
    while IFS= read -r line; Tun
    echo Zeile gelesen: $line
    # Fügen Sie hier Ihre Verarbeitungslogik hinzu
    erledigt <$file
    anders
    echo Datei nicht gefunden: $file
    Sei

    Erläuterung:

    1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
    2. file=/home/jayeshkumar/jayesh.txt: Diese Zeile definiert die Variablendatei und weist den vollständigen Pfad zur Datei jayesh.txt im Verzeichnis /home/jayeshkumar zu. Ändern Sie diesen Pfad so, dass er mit dem tatsächlichen Pfad der Datei übereinstimmt, die Sie lesen möchten.
    3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Es prüft, ob die durch die Variable $file angegebene Datei existiert. Das Flag -e prüft, ob eine Datei vorhanden ist.
    4. while IFS= read -r line; do: Diese Zeile initiiert eine While-Schleife, die Zeilen aus der Datei liest.
      • IFS=: Das IFS (Internal Field Separator) wird auf einen leeren Wert gesetzt, um führende und nachfolgende Leerzeichen beizubehalten.
      • read -r line: Dies liest die aktuelle Zeile aus der Datei und speichert sie in der Variablen line.
    5. echo Zeile gelesen: $line: Diese Zeile gibt den Inhalt der Zeile aus, die aus der Datei gelesen wurde. Die Variable $line enthält den Inhalt der aktuellen Zeile.
    6. # Fügen Sie hier Ihre Verarbeitungslogik hinzu: Dies ist ein Platzhalterkommentar, in dem Sie Ihre eigene Logik zur Verarbeitung jeder Zeile hinzufügen können. Beispielsweise können Sie die Zeile analysieren, Informationen extrahieren oder bestimmte Aktionen basierend auf dem Inhalt ausführen.
    7. done <$file: Dies markiert das Ende der while-Schleife. Das < $file leitet den Inhalt der Datei um, damit er von der Schleife gelesen werden kann.
    8. else: Wenn die Datei nicht existiert (die Bedingung in der if-Anweisung ist falsch), führt das Skript den Code unter dem else-Zweig aus.
    9. echo Datei nicht gefunden: $file: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde.
    10. fi: Diese Zeile markiert das Ende der if-Anweisung.
    Datei lesen

    Datei lesen

    Hier haben wir „“ verwendet pwd ` Befehl, um den Pfad des aktuellen Verzeichnisses abzurufen.

    17) Schreiben Sie eine Funktion in ein Shell-Skript, die die Fakultät einer bestimmten Zahl berechnet.

    Hier ist das Skript, dasBerechnen Sie die Fakultäteiner gegebenen Zahl.

    #!/bin/bash
    # Definieren Sie eine Funktion zur Berechnung der Fakultät
    berechne_faktorial() {
    num=$1
    Tatsache=1
    for ((i=1; i<=num; i++)); Tun
    fact=$((fact * i))
    Erledigt
    echo $fact
    }
    # Fordern Sie den Benutzer auf, eine Nummer einzugeben
    echo Geben Sie eine Zahl ein:
    lese input_num
    # Rufen Sie die Funktion „calcure_factorial“ mit der Eingabenummer auf
    factial_result=$(calculate_factorial $input_num)
    # Zeigen Sie das faktorielle Ergebnis an
    echo Factorial von $input_num ist: $factorial_result

    Erläuterung:

    1. Das Skript beginnt mit der Shebang-Zeile #!/bin/bash, um den Interpreter anzugeben.
    2. berechne_faktorial() ist als Funktion definiert. Es benötigt ein Argument, num, das die Zahl ist, für die die Fakultät berechnet werden muss.
    3. Innerhalb der Funktion wird fact auf 1 initialisiert. Diese Variable speichert das Fakultätsergebnis.
    4. Die for-Schleife iteriert von 1 bis zur angegebenen Zahl (num). In jeder Iteration multipliziert es den aktuellen Wert von fact mit dem Schleifenindex i.
    5. Nach Abschluss der Schleife enthält die Faktenvariable die berechnete Fakultät.
    6. Das Skript fordert den Benutzer mit „read“ zur Eingabe einer Zahl auf.
    7. Die Funktion „calcure_factorial“ wird mit der vom Benutzer angegebenen Zahl aufgerufen und das Ergebnis wird in der Variablen „factorial_result“ gespeichert.
    8. Abschließend zeigt das Skript das berechnete Fakultätsergebnis an.
    Fakultät

    Fakultät

    18) Wie gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um?

    In einem Shell-Skript können Sie Signale wie Strg+C (auch bekannt als SIGINT) mit dem Trap-Befehl verarbeiten. Strg+C generiert ein SIGINT-Signal, wenn der Benutzer es drückt, um das laufende Skript oder Programm zu unterbrechen. Mithilfe des Trap-Befehls können Sie Aktionen festlegen, die ausgeführt werden sollen, wenn ein bestimmtes Signal empfangen wird. So gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um:

    #!/bin/bash
    Aufräumen() {
    echo Skript unterbrochen. Bereinigung wird durchgeführt…
    # Fügen Sie hier Ihre Bereinigungsaktionen hinzu
    Ausgang 1
    }
    # Richten Sie eine Falle ein, um die Bereinigungsfunktion aufzurufen, wenn Strg+C (SIGINT) empfangen wird
    Fallenbereinigung SIGINT
    # Rest Ihres Skripts
    echo Laufen…
    Schlaf 10
    echo Fertig.

    Der Umgang mit Signalen ist wichtig, um Skripte robust zu machen und sicherzustellen, dass sie unerwartete Unterbrechungen ordnungsgemäß verarbeiten. Sie können die Bereinigungsfunktion an Ihre spezifischen Anforderungen anpassen, z. B. Dateien schließen, Prozesse stoppen oder Informationen protokollieren, bevor das Skript beendet wird.

    Erläuterung:

    1. #!/bin/bash: Diese Shebang-Zeile gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll.
    2. cleanup() { … }: Dies definiert eine Funktion namens cleanup. In diese Funktion können Sie alle Aktionen einschließen, die ausgeführt werden müssen, wenn das Skript unterbrochen wird, z. B. das Schließen von Dateien, das Freigeben von Ressourcen oder das Durchführen anderer Bereinigungsaufgaben.
    3. trap cleanup SIGINT: Der trap-Befehl wird zum Einrichten eines Signalhandlers verwendet. In diesem Fall wird angegeben, dass die Bereinigungsfunktion ausgeführt werden soll, wenn das SIGINT-Signal (Strg+C) empfangen wird.
    4. echo Running…, sleep 10, echo Finished.: Dies sind nur Beispielbefehle, um die Ausführung eines Skripts zu simulieren.

    446

    19) Erstellen Sie ein Skript, das nach doppelten Zeilen in einer Textdatei sucht und diese entfernt.

    Hier ist unser Linux-Skript, in dem wir doppelte Zeilen aus einer Textdatei entfernen.

    #!/bin/bash
    input_file=input.txt
    Ausgabedatei=Ausgabe.txt
    $input_file | sortieren uniq> $output_file
    echo Doppelte Zeilen erfolgreich entfernt.

    Erläuterung:

    1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    2. Die Variable input_file wird auf den Namen der Eingabedatei gesetzt, die doppelte Zeilen enthält (ändern Sie diesen in Ihren tatsächlichen Namen der Eingabedatei).
    3. Die Variable „output_file“ wird auf den Namen der Ausgabedatei gesetzt, aus der die Duplikate entfernt werden (ändern Sie diesen in den gewünschten Namen der Ausgabedatei).
    4. Das Skript verwendet den Sortierbefehl, um die Zeilen in der Eingabedatei zu sortieren. Durch das Sortieren der Zeilen wird sichergestellt, dass doppelte Zeilen gruppiert werden.
    5. Die sortierten Zeilen werden dann durch den Befehl uniq geleitet, der aufeinanderfolgende doppelte Zeilen entfernt. Die Ausgabe dieses Prozesses wird in die Ausgabedatei umgeleitet.
    6. Nachdem die Duplikate entfernt wurden, gibt das Skript eine Erfolgsmeldung aus.
    Entfernen doppelter Zeilen

    Entfernen doppelter Zeilen

    Hier verwenden wir „ Katze ` um den Text in der Textdatei anzuzeigen.

    20) Schreiben Sie ein Skript, das ein sicheres Zufallspasswort generiert.

    Hier ist unser Skript zum Generieren eines sicheren Zufallspassworts.

    #!/bin/bash
    # Funktion zum Generieren eines zufälligen Passworts
    generiere Passwort() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Rufen Sie die Funktion auf und speichern Sie das generierte Passwort
    passwort=$(generate_password)
    echo Generiertes Passwort: $password

    Hinweis: Der Benutzer kann die Länge seines Passworts entsprechend ändern, indem er die Zahl „12“ ersetzt.

    Erläuterung:

    1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass es mit der Bash-Shell interpretiert werden soll.
    2. Die Funktion „generate_password“ ist so definiert, dass sie ein zufälliges Passwort generiert. So funktioniert das:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • falten -w 12 unterteilt die gefilterten Zufallsdaten in Zeilen mit einer Breite von jeweils 12 Zeichen.
      • head -n 1 wählt die erste Zeile aus und gibt uns effektiv eine zufällige Folge von Zeichen der Länge 12.
    3. Der Variable „password“ wird das Ergebnis des Aufrufs der Funktion „generate_password“ zugewiesen.
    4. Abschließend wird das generierte Passwort mittels Echo angezeigt.

    448

    21) Schreiben Sie ein Shell-Skript, das die Gesamtgröße aller Dateien in einem Verzeichnis berechnet.

    Hier ist ein Shell-Skript zur Berechnung der Gesamtgröße aller Dateien in einem Verzeichnis.

    #!/bin/bash
    Verzeichnis=/Pfad/zu/Ihrem/Verzeichnis
    total_size=$(du -csh $directory | grep total | awk ‚{print $1}‘)
    echo Gesamtgröße der Dateien in $directory: $total_size

    Erläuterung:

    1. Das Skript beginnt mit dem Befehl #!/bin/bash, der darauf hinweist, dass es mithilfe der Bash-Shell interpretiert werden soll.
    2. Die Verzeichnisvariable wird auf den Pfad des Verzeichnisses gesetzt, für das Sie die Gesamtdateigröße berechnen möchten. Ersetzen Sie /path/to/your/directory durch den tatsächlichen Pfad.
    3. Der Befehl du wird verwendet, um die Dateispeichernutzung abzuschätzen. Die verwendeten Optionen sind:
      • -c: Erzeuge eine Gesamtsumme.
      • -s: Zeigt nur die Gesamtgröße des angegebenen Verzeichnisses an.
      • -h: Druckgrößen in einem für Menschen lesbaren Format (z. B. KB, MB, GB).
    4. Die Ausgabe von du wird an grep total weitergeleitet, um die Zeile herauszufiltern, die die Gesamtgröße enthält.
    5. awk „{print $1}“ wird verwendet, um das erste Feld (Gesamtgröße) aus der Zeile zu extrahieren.
    6. Die berechnete Gesamtgröße wird in der Variablen total_size gespeichert.
    7. Abschließend zeigt das Skript mithilfe von Echo die Gesamtgröße an.
    Gesamtgröße der Dateien

    Gesamtgröße der Dateien

    Hier haben wir „“ verwendet pwd ` Befehl, um den aktuellen Verzeichnispfad anzuzeigen.

    22) Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting.

    Besonderheit `if`Staiftement `elif`-Erklärung
    Zweck Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting. Stellt alternative Bedingungen bereit, um zu überprüfen, ob die anfängliche If-Bedingung falsch ist.
    Verwendung Wird für den Anfangszustand verwendet. Wird nach der anfänglichen if-Bedingung verwendet, um zusätzliche Bedingungen zu überprüfen.
    Anzahl der Blöcke Kann nur einen if-Block haben. Kann mehrere elif-Blöcke haben, aber nur einen else-Block (optional).
    Ausführung Führt den mit der if-Anweisung verknüpften Codeblock aus, wenn die Bedingung wahr ist. Wenn die Bedingung falsch ist, wird der else-Block (falls vorhanden) ausgeführt (optional). Überprüft jede Elif-Bedingung der Reihe nach. Wenn eine elif-Bedingung wahr ist, wird der entsprechende Codeblock ausgeführt und das Skript verlässt den gesamten bedingten Block. Wenn keine der elif-Bedingungen wahr ist, wird der else-Block (falls vorhanden) ausgeführt.
    Verschachtelte Strukturen Kann in anderen if-, elif- oder else-Blöcken verschachtelt werden. Kann nicht in einem anderen elif-Block verschachtelt werden, kann aber in einem if- oder else-Block verwendet werden.

    Lassen Sie es uns anhand eines Beispiels verstehen.

    #!/bin/bash
    Zahl=5
    if [ $number -gt 10 ]; Dann
    echo $number ist größer als 10
    anders
    echo $number ist nicht größer als 10
    Sei
    Echo ——–
    if [ $number -gt 10 ]; Dann
    echo $number ist größer als 10
    elif [ $number -eq 10 ]; Dann
    echo $number ist gleich 10
    anders
    echo $number ist kleiner als 10
    Sei

    Erläuterung:

    In diesem Beispiel prüft der erste if-Block, ob die Zahl größer als 10 ist. Wenn nicht, gibt er eine Meldung aus, die angibt, dass die Zahl nicht größer als 10 ist. Der zweite Block mit elif-Anweisungen prüft nacheinander mehrere Bedingungen, bis eine davon wahr ist. Da in diesem Fall der Wert von number 5 ist, lautet die Ausgabe:

    if_elif Unterschied

    if_elif Unterschied

    23) Wie nutzt man eine While-Schleife, um Befehle wiederholt auszuführen?

    Bei der Shell-Skripterstellung wird eine While-Schleife verwendet, um eine Reihe von Befehlen wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist. Die Schleife führt die Befehle so lange aus, bis die Bedingung falsch wird.

    Hier ist die grundlegende Syntax einer While-Schleife:

    while [ Bedingung ]; Tun
    # Auszuführende Befehle
    Erledigt

    Erläuterung:

    1. Die „while“-Schleife beginnt mit dem Schlüsselwort „while“, gefolgt von einer in eckigen Klammern eingeschlossenen Bedingung „[ ]“.
    2. Der Schleifenkörper, der die auszuführenden Befehle enthält, ist in die Schlüsselwörter „do“ und „done“ eingeschlossen.
    3. Die Schleife prüft zunächst die Bedingung. Wenn die Bedingung wahr ist, werden die Befehle im Schleifenkörper ausgeführt. Nachdem der Schleifenkörper ausgeführt wurde, wird die Bedingung erneut überprüft und der Vorgang wiederholt, bis die Bedingung falsch wird.

    Beispiel: Wenn wir Zahlen von 1 bis 5 drucken möchten

    #!/bin/bash
    Zähler=1
    while [ $counter -le 5 ]; Tun
    Echo-Nummer: $counter
    counter=$((counter + 1))
    Erledigt

    Erläuterung:

    • Die Zählervariable wird auf 1 gesetzt.
    • Die while-Schleife prüft, ob der Wert von counter kleiner oder gleich 5 ist. Solange diese Bedingung erfüllt ist, wird die Schleife weiter ausgeführt.
    • Innerhalb der Schleife wird der aktuelle Wert des Zählers mithilfe von Echo ausgegeben.
    • Der Zähler wird mit dem Ausdruck $((Zähler + 1)) um 1 erhöht.
    while-Schleife

    while-Schleife

    24) Erstellen Sie ein Shell-Skript, das alle leeren Dateien in einem Verzeichnis findet und auflistet.

    Shell-Skript, mit dem Sie mithilfe der Befehle „find“ und „stat“ alle leeren Dateien in einem Verzeichnis suchen und auflisten können:

    #!/bin/bash
    Verzeichnis=$1″
    if [ -z $directory ]; Dann
    Echo-Nutzung: $0
    Ausgang 1
    Sei

    Wenn [ ! -d $Verzeichnis ]; Dann
    echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
    Ausgang 1
    Sei
    echo Leere Dateien im $directory:
    finde $directory -type f -empty

    Erläuterung:

    1. ` #!/bin/bash „: Dies wird als Shebang bezeichnet und weist das Betriebssystem an, die Bash-Shell zum Interpretieren und Ausführen des Skripts zu verwenden.
    2. ` Verzeichnis=$1″ `: Diese Zeile weist der Variablen ` das erste Befehlszeilenargument (bezeichnet mit $1) zu Verzeichnis `.
    3. ` if [ -z $directory ]; Dann `: Diese Zeile startet eine if-Anweisung, die prüft, ob das ` Verzeichnis ` Variable ist leer (-z testet auf eine leere Zeichenfolge).
    4. ` Echo-Nutzung: $0 `: Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung aus, wobei ` 0 $ ` steht für den Namen des Skripts.
    5. ` Ausgang 1 `: Diese Zeile beendet das Skript mit dem Exit-Code ` 1 `, was auf einen Fehler hinweist.
    6. ` Sei `: Diese Zeile markiert das Ende des ` Wenn ` Aussage.
    7. ` Wenn [ ! -d $Verzeichnis ]; Dann `: Dies startet eine weitere if-Anweisung, um zu prüfen, ob das angegebene Verzeichnis existiert (` -D ` testet für ein Verzeichnis).
    8. ` echo Fehler: „$directory“ ist kein gültiges Verzeichnis. `: Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
    9. ` Ausgang 1 `: Beendet das Skript mit dem Exit-Code ` 1 `.
    10. ` Sei `: Markiert das Ende des zweiten ` wenn` Stellungnahme.
    11. ` echo Leere Dateien im $directory: `: Wenn bisher alles gültig ist, gibt diese Zeile eine Meldung aus, die angibt, dass das Skript leere Dateien im angegebenen Verzeichnis auflistet.
    12. ` finde $directory -type f -empty `: Diese Zeile verwendet das ` finden ` Befehl zum Suchen nach leeren Dateien (` -leer `) vom Typ reguläre Dateien (` -Typ f `) im angegebenen Verzeichnis. Anschließend werden diese leeren Dateien aufgelistet.
    Leere Dateien finden

    Leere Dateien finden

    Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/ verwendet

    25) Was ist der Zweck des Lesebefehls beim Shell-Scripting?

    Mit dem Lesebefehl beim Shell-Scripting fragt das Skript Sie nach Informationen. Es ist, als würde Ihnen ein Computer eine Frage stellen und auf Ihre Antwort warten. Dies ist nützlich für Skripte, bei denen Sie etwas eingeben müssen oder wenn das Skript mit Informationen aus Dateien arbeiten muss. Der Lesebefehl hilft dem Skript, anzuhalten und auf Ihre Eingabe zu warten. Anschließend kann es diese Informationen verwenden, um weitere Aufgaben im Skript auszuführen.

    Syntax des Lesebefehls:

    read variable_name>

    Beispiel : Wenn wir den Namen als Eingabe vom Benutzer verwenden möchten, um ihn zu drucken.

    #!/bin/bash
    echo Bitte geben Sie Ihren Namen ein:
    Namen lesen
    echo Hallo, $name!

    453

    lies nam

    Zusammenfassend lässt sich sagen, dass der Lesebefehl verwendet wird, um Benutzereingaben oder Daten aus Dateien in Shell-Skripten zu erfassen, wodurch die Skripte interaktiver und vielseitiger werden.

    26) Schreiben Sie ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

    Hier ist ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

    #!/bin/bash
    Verzeichnis=$1″
    if [ -z $directory ]; Dann
    Echo-Nutzung: $0
    Ausgang 1
    Sei

    Wenn [ ! -d $Verzeichnis ]; Dann

    echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
    Ausgang 1
    Sei

    cd $verzeichnis || Ausgang 1

    für Datei in *; Tun
    if [ -f $file ]; Dann
    newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘)
    [ $file != $newname ] && mv $file $newname
    Sei
    Erledigt

    Erläuterung:

    1. #!/bin/bash : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    2. Verzeichnis=$1″ : Diese Zeile weist das erste Befehlszeilenargument dem Variablenverzeichnis zu.
    3. if [ -z $directory ]; Dann : Diese Zeile prüft, ob die Verzeichnisvariable leer ist (kein Argument angegeben, wenn das Skript ausgeführt wird).
    4. Echo-Nutzung: $0 : Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung mit dem Namen des Skripts ($0) aus.
    5. Ausgang 1 : Diese Zeile beendet das Skript mit dem Exit-Code 1, was darauf hinweist, dass ein Fehler aufgetreten ist.
    6. F i: Dies markiert das Ende der ersten if-Anweisung.
    7. Wenn [ ! -d $Verzeichnis ]; Dann : Diese Zeile prüft, ob das angegebene Verzeichnis nicht existiert (-d testet ein Verzeichnis).
    8. echo Fehler: „$directory“ ist kein gültiges Verzeichnis. : Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
    9. Ausgang 1 : Beendet das Skript mit dem Exit-Code 1.
    10. Sei : Markiert das Ende der zweiten if-Anweisung.
    11. cd $verzeichnis || Ausgang 1 : Ändert das aktuelle Arbeitsverzeichnis in das angegebene Verzeichnis. Wenn der Verzeichniswechsel fehlschlägt (z. B. Verzeichnis nicht vorhanden), wird das Skript mit einem Fehlercode beendet.
    12. für Datei in *; Tun: ICH für Datei in *; Tun: löst eine Schleife aus, die alle Elemente im aktuellen Verzeichnis durchläuft (* entspricht allen Dateinamen).
    13. if [ -f $file ]; Dann : Überprüft, ob das aktuelle Schleifeniterationselement eine reguläre Datei ist (-f testet auf eine reguläre Datei).
    14. newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘) : Wandelt den aktuellen Dateinamen ($file) mit dem Befehl tr in Kleinbuchstaben um und speichert das Ergebnis in der Variablen newname.
    15. [ $file != $newname ] && mv $file $newname : Vergleicht den ursprünglichen Dateinamen mit dem neuen Dateinamen in Kleinbuchstaben. Wenn sie unterschiedlich sind, wird die Datei mit dem Befehl mv umbenannt.
    16. Sei : Markiert das Ende der inneren if-Anweisung.
    17. Erledigt : Markiert das Ende der Schleife.

    454

    Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/test verwendet

    27) Wie können Sie arithmetische Operationen innerhalb eines Shell-Skripts verwenden?

    Arithmetische Operationen können innerhalb eines Shell-Skripts mithilfe verschiedener integrierter Methoden ausgeführt werden. Die Shell bietet Mechanismen für einfache arithmetische Berechnungen mithilfe der arithmetischen Erweiterung wie:

    1. Arithmetische Erweiterung ($((…)))
    2. Verwenden des expr-Befehls
    3. Verwenden des let-Befehls

    Hier ist unser Shell-Skript, das alle drei Methoden für arithmetische Operationen erklärt.

    #!/bin/bash
    num1=10
    num2=5

    #Arithmetische Erweiterung ($((…)))

    Ergebnis=$((num1 + num2))
    echo Summe: $result

    #Verwenden des expr-Befehls

    sum=$(expr $num1 + $num2)
    echo Summe: $sum

    #Verwenden des let-Befehls

    sei sum = num1 + num2
    echo Summe: $sum

    Erläuterung:

    1. `#!/bin/bash` : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
    2. `num1=10` und ` num2=5` : Diese Zeilen weisen den Variablen ` die Werte 10 und 5 zu num1 ` und ` num2 ` bzw.
    3. `#Arithmetische Erweiterung ($((…)))` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die arithmetische Erweiterung demonstriert.
    4. `result=$((num1 + num2))` : Diese Zeile verwendet eine arithmetische Erweiterung, um die Summe von ` zu berechnen num1 ` und ` num2 ` und speichert das Ergebnis im ` Ergebnis ` variabel.
    5. „echo Summe: $result“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Ergebnis ` variabel.
    6. `#Verwenden des expr-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert Ausdruck ` Befehl für arithmetische Operationen.
    7. `sum=$(expr $num1 + $num2)` : Diese Zeile verwendet das ` Ausdruck ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und speichert das Ergebnis im ` Summe ` variabel. Beachten Sie, dass das ` Ausdruck Der Befehl ` erfordert Leerzeichen um die Operatoren.
    8. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
    9. `#Verwenden des let-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert lassen ` Befehl für arithmetische Operationen.
    10. `Lass Summe = num1 + num2″` : Diese Zeile verwendet das ` lassen ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und weist das Ergebnis dem ` zu Summe ` variabel. Das ` lassen Für den Befehl ` sind keine Leerzeichen um die Operatoren erforderlich.
    11. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
    Arithmetik

    Arithmetik

    28) Erstellen Sie ein Skript, das prüft, ob ein Netzwerkhost erreichbar ist.

    Hier ist ein einfaches Shell-Skript, das mithilfe des Ping-Befehls prüft, ob ein Netzwerkhost erreichbar ist:

    #!/bin/bash
    host=$1″
    if [ -z $host ]; Dann
    Echo-Nutzung: $0
    Ausgang 1
    Sei
    ping -c 4 $host

    wenn [ $? -eq 0 ]; Dann
    echo $host ist erreichbar.
    anders
    echo $host ist nicht erreichbar.
    Sei

    Erläuterung:

    1. Es nimmt einen Hostnamen oder eine IP-Adresse als Argument und prüft, ob das Argument angegeben wird.
    2. Wenn kein Argument angegeben wird, wird eine Nutzungsmeldung angezeigt und der Vorgang beendet.
    3. Es verwendet den Ping-Befehl mit der Option -c 4, um vier ICMP-Echo-Anfragen an den angegebenen Host zu senden.
    4. Nachdem der Ping-Befehl ausgeführt wurde, prüft er den Exit-Status ($?). Wenn der Exit-Status 0 ist, bedeutet dies, dass der Host erreichbar ist und das Skript eine Erfolgsmeldung ausgibt. Andernfalls wird eine Fehlermeldung ausgegeben.

    456

    Notiz : Wir müssen beim Ausführen des Skripts einen Hostnamen als Argument angeben. Hier haben wir google.com verwendet

    29) Schreiben Sie ein Shell-Skript, um das größte Element in einem Array zu finden:

    Hier ist ein Shell-Skript, um das größte Element in einem Array zu finden.

    #!/bin/bash
    # Deklarieren Sie ein Array
    array=(3 56 24 89 67)

    # Initialisieren Sie eine Variable, um den Maximalwert zu speichern, beginnend mit dem ersten Element

    max=${array[0]}

    # Durch das Array iterieren

    für num in ${array[@]}; Tun

    # Vergleichen Sie jedes Element mit dem aktuellen Maximum

    if ((num> max)); Dann
    max=$num
    Sei
    Erledigt

    # Drucken Sie den Maximalwert aus

    echo Das maximale Element im Array ist: $max

    Erläuterung:

    1. ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.
    2. ` array=(3 56 24 89 67) `: Das Array wird deklariert und mit Werten initialisiert.
    3. ` max=${array[0]} `: `max` wird mit dem ersten Element des Arrays initialisiert.
    4. ` für num in ${array[@]}; Tun „: Eine „for“-Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.
    5. ` if ((num> max)); Dann „: Eine „if“-Anweisung prüft, ob das aktuelle Element „num“ größer als das aktuelle Maximum „max“ ist.
    6. ` max=$num`: If`num ` ist größer als `max`, `max` wird mit dem Wert von num aktualisiert.
    7. ` Erledigt `: Die `for`-Schleife ist geschlossen.
    8. ` echo Das maximale Element im Array ist: $max `: Abschließend gibt das Skript den im Array gefundenen Maximalwert aus.
    461

    größte Zahl

    30) Schreiben Sie ein Skript, um die Summe der Elemente in einem Array zu berechnen.

    #!/bin/bash

    # Deklarieren Sie ein Array

    array=(1 65 22 19 94)

    # Initialisieren Sie eine Variable, um die Summe zu speichern

    Summe=0

    # Durchlaufen Sie das Array und fügen Sie jedes Element zur Summe hinzu

    für num in ${array[@]}; Tun
    am=$((am + am))
    Erledigt

    # Drucken Sie die Summe aus

    echo Die Summe der Elemente im Array ist: $sum

    Erläuterung:

    ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.

    ` array=(1 65 22 19 94) `: Das Array wird deklariert und mit Werten initialisiert.

    ` Summe=0 `:` Summe ` wird auf Null initialisiert, um die Summe der Elemente zu speichern.

    ` für num in ${array[@]}; Tun `: A` für Die Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.

    ` am=$((am + am)) `: Innerhalb der Schleife jedes Element ` Auf eins ` wird dem ` hinzugefügt Summe ` variabel.

    ` Erledigt `: Das ` für ` Schleife ist geschlossen.

    „echo Die Summe der Elemente im Array ist: $sum“: Schließlich gibt das Skript die Summe aller Elemente im Array aus.

    462

    Summe der Elemente

    Erfahren Sie mehr über Shell-Skripte

    Abschluss

    Wir alle wissen, dass Shell-Skripte sehr nützlich sind, um die Arbeitsproduktivität zu steigern und auch Zeit zu sparen. In diesem Artikel haben wir es also behandelt 30 sehr nützliche und am meisten betrügerische Beispiele für Shell-Skripte . Wir hoffen, dass diese vollständige Anleitung zum Beispiel für Shell-Skripte Ihnen hilft, alles über die Shell-Skripte zu verstehen.



    ) aus.
  5. Ausgang 1 : Diese Zeile beendet das Skript mit dem Exit-Code 1, was darauf hinweist, dass ein Fehler aufgetreten ist.
  6. F i: Dies markiert das Ende der ersten if-Anweisung.
  7. Wenn [ ! -d $Verzeichnis ]; Dann : Diese Zeile prüft, ob das angegebene Verzeichnis nicht existiert (-d testet ein Verzeichnis).
  8. echo Fehler: „$directory“ ist kein gültiges Verzeichnis. : Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. Ausgang 1 : Beendet das Skript mit dem Exit-Code 1.
  10. Sei : Markiert das Ende der zweiten if-Anweisung.
  11. cd $verzeichnis || Ausgang 1 : Ändert das aktuelle Arbeitsverzeichnis in das angegebene Verzeichnis. Wenn der Verzeichniswechsel fehlschlägt (z. B. Verzeichnis nicht vorhanden), wird das Skript mit einem Fehlercode beendet.
  12. für Datei in *; Tun: ICH für Datei in *; Tun: löst eine Schleife aus, die alle Elemente im aktuellen Verzeichnis durchläuft (* entspricht allen Dateinamen).
  13. if [ -f $file ]; Dann : Überprüft, ob das aktuelle Schleifeniterationselement eine reguläre Datei ist (-f testet auf eine reguläre Datei).
  14. newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘) : Wandelt den aktuellen Dateinamen ($file) mit dem Befehl tr in Kleinbuchstaben um und speichert das Ergebnis in der Variablen newname.
  15. [ $file != $newname ] && mv $file $newname : Vergleicht den ursprünglichen Dateinamen mit dem neuen Dateinamen in Kleinbuchstaben. Wenn sie unterschiedlich sind, wird die Datei mit dem Befehl mv umbenannt.
  16. Sei : Markiert das Ende der inneren if-Anweisung.
  17. Erledigt : Markiert das Ende der Schleife.

454

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/test verwendet

27) Wie können Sie arithmetische Operationen innerhalb eines Shell-Skripts verwenden?

Arithmetische Operationen können innerhalb eines Shell-Skripts mithilfe verschiedener integrierter Methoden ausgeführt werden. Die Shell bietet Mechanismen für einfache arithmetische Berechnungen mithilfe der arithmetischen Erweiterung wie:

  1. Arithmetische Erweiterung ($((…)))
  2. Verwenden des expr-Befehls
  3. Verwenden des let-Befehls

Hier ist unser Shell-Skript, das alle drei Methoden für arithmetische Operationen erklärt.

#!/bin/bash
num1=10
num2=5

#Arithmetische Erweiterung ($((…)))

Ergebnis=$((num1 + num2))
echo Summe: $result

#Verwenden des expr-Befehls

sum=$(expr $num1 + $num2)
echo Summe: $sum

#Verwenden des let-Befehls

sei sum = num1 + num2
echo Summe: $sum

Erläuterung:

  1. `#!/bin/bash` : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. `num1=10` und ` num2=5` : Diese Zeilen weisen den Variablen ` die Werte 10 und 5 zu num1 ` und ` num2 ` bzw.
  3. `#Arithmetische Erweiterung ($((…)))` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die arithmetische Erweiterung demonstriert.
  4. `result=$((num1 + num2))` : Diese Zeile verwendet eine arithmetische Erweiterung, um die Summe von ` zu berechnen num1 ` und ` num2 ` und speichert das Ergebnis im ` Ergebnis ` variabel.
  5. „echo Summe: $result“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Ergebnis ` variabel.
  6. `#Verwenden des expr-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert Ausdruck ` Befehl für arithmetische Operationen.
  7. `sum=$(expr $num1 + $num2)` : Diese Zeile verwendet das ` Ausdruck ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und speichert das Ergebnis im ` Summe ` variabel. Beachten Sie, dass das ` Ausdruck Der Befehl ` erfordert Leerzeichen um die Operatoren.
  8. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
  9. `#Verwenden des let-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert lassen ` Befehl für arithmetische Operationen.
  10. `Lass Summe = num1 + num2″` : Diese Zeile verwendet das ` lassen ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und weist das Ergebnis dem ` zu Summe ` variabel. Das ` lassen Für den Befehl ` sind keine Leerzeichen um die Operatoren erforderlich.
  11. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
Arithmetik

Arithmetik

28) Erstellen Sie ein Skript, das prüft, ob ein Netzwerkhost erreichbar ist.

Hier ist ein einfaches Shell-Skript, das mithilfe des Ping-Befehls prüft, ob ein Netzwerkhost erreichbar ist:

#!/bin/bash
host=″
if [ -z $host ]; Dann
Echo-Nutzung:

Bei allen Linux-Distributionen ist das Shell-Skript wie ein Zauberstab, der den Prozess automatisiert, Benutzern Zeit spart und die Produktivität steigert. Dieses Tutorial zur SOLL-Skripterstellung stellt Ihnen mehr als 25 SOLL-Skripting-Beispiele vor.

Aber bevor wir zum Thema übergehen Shell-Scripting Beispiele: Lassen Sie uns Shell-Skripte und die tatsächlichen Anwendungsfälle von Shell-Skripten verstehen.

Was ist Shell-Skript?

Nun, die Schale ist eine CLI ( Befehlszeileninterpreter ), das in einem Textfenster ausgeführt wird, in dem Benutzer Shell-Befehle verwalten und ausführen können. Andererseits wird der Prozess des Schreibens einer Reihe von Befehlen, die auf einem Linux-System ausgeführt werden sollen. Eine Datei, die solche Anweisungen enthält, wird als Bash-Skript bezeichnet.

Verwendung von Shell-Skripten

Im Folgenden sind einige häufige Verwendungszwecke von Shell Script aufgeführt:

  • Aufgabenautomatisierung – Es kann verwendet werden, um sich wiederholende Aufgaben wie regelmäßige Backups und Softwareinstallationsaufgaben zu automatisieren.
  • Anpassung - Man kann Shell-Skripte verwenden, um seine Befehlszeilenumgebung zu entwerfen und seine Aufgabe je nach Bedarf einfach auszuführen.
  • Dokumentenverwaltung - Die Shell-Skripte können auch zum Verwalten und Bearbeiten von Dateien und Verzeichnissen verwendet werden, beispielsweise zum Verschieben, Kopieren, Umbenennen oder Löschen von Dateien.

Beispiele für Shell-Skripte unter Linux

1) Was bedeutet das Shebang (#!) am Anfang eines Shell-Skripts?

Der Mist (#!) am Anfang eines Skripts gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll. Es teilt dem System mit, welche Shell oder welcher Interpreter die Befehle des Skripts interpretieren soll.

Zum Beispiel: Angenommen, wir haben ein Skript mit dem Namen myscript.sh geschrieben in der Bash-Shell:

Mist

Mist

In diesem Beispiel:

  • Das #!/bin/bash am Anfang des Skripts gibt an, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  • Die Echo-Befehle werden zum Drucken von Nachrichten an das Terminal verwendet.

2) Wie führt man ein Shell-Skript über die Befehlszeile aus?

Um ein Shell-Skript über die Befehlszeile auszuführen, müssen wir die folgenden Schritte ausführen:

  • Stellen Sie sicher, dass die Skriptdatei über ausführbare Berechtigungen verfügt chmod-Befehl :
chmod +x myscript.sh>
  • Führen Sie das Skript unter Verwendung seines Dateinamens aus:
./myscript.sh>

Hier muss ersetzt werden myscrtipt.sh mit Ihrem Skriptnamen.

3) Schreiben Sie ein Shell-Skript, das techcodeview.com auf dem Terminal ausgibt.

Erstellen Sie einen Skriptnamen „myscript.sh“ (wir verwenden „ Weil ` Editor, Sie können einen beliebigen Editor auswählen)

vim myscript.sh>

#!/bin/bash
# Dieses Skript druckt techcodeview.com auf dem Terminal
echo techcodeview.com

Namen drucken

Namen drucken

Wir machen unser Skript mit „chmod +x“ ausführbar, führen es dann mit „./myscipt.sh“ aus und erhalten die gewünschte Ausgabe techcodeview.com.

4) Erklären Sie den Zweck des Echo-Befehls beim Shell-Scripting.

Der Echo-Befehl dient der Anzeige von Texten oder Variablen auf dem Terminal. Es wird häufig zum Drucken von Nachrichten, Variablenwerten und zum Generieren von Programmausgaben verwendet.

434

Echo-Befehl

In diesem Beispiel haben wir „echo“ direkt auf dem Terminal ausgeführt, da es innerhalb des Shell-Skripts genauso funktioniert.

5) Wie kann man einer Variablen in einem Shell-Skript einen Wert zuweisen?

Variablen werden Werte mit dem Zuweisungsoperator = zugewiesen.

Zum Beispiel:

#!/bin/bash
# Einer Variablen einen Wert zuweisen
Name=Jayesh
Alter=21
echo $name $age

Erläuterung:

  • Der Namensvariablen wird der Wert Jayesh zugewiesen.
  • Der Altersvariable wird der Wert 21 zugewiesen.
  • echo wird zum Drucken verwendet und `$name` `$age` wird verwendet, um den in den Variablen gespeicherten Wert aufzurufen.

435

6) Schreiben Sie ein Shell-Skript, das den Namen eines Benutzers als Eingabe verwendet und ihn begrüßt.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash
# Fragen Sie den Benutzer nach seinem Namen
echo Wie heißt du?
Namen lesen
# Begrüßen Sie den Benutzer
echo Hallo, $name! Freut mich, Sie kennenzulernen.

Erläuterung:

  • #!/bin/bash: Das ist die Shebang-Zeile. Es weist das System an, den Bash-Interpreter zum Ausführen des Skripts zu verwenden.
  • # Fragen Sie den Benutzer nach seinem Namen: Dies ist ein Kommentar. Es bietet Kontext zum kommenden Code. Kommentare werden vom Interpreter ignoriert.
  • echo Wie heißt du?: Der echo-Befehl wird verwendet, um den Text in doppelten Anführungszeichen auf dem Terminal anzuzeigen.
  • Lesename: Der Lesebefehl wartet auf die Eingabe von Text durch den Benutzer und speichert ihn im Variablennamen.
  • echo Hallo, $name! Freut mich, Sie kennenzulernen.: Diese Zeile verwendet den echo-Befehl, um eine Begrüßungsnachricht zu drucken, die den Wert der Namensvariablen enthält, der aus der Benutzereingabe erfasst wurde.

436

7) Wie fügt man einem Shell-Skript Kommentare hinzu?

Kommentare im Shell-Scripting werden verwendet, um Erklärungen oder Kontext zum Code bereitzustellen. Sie werden vom Interpreter ignoriert und sind nur für Menschen gedacht, die das Skript lesen. Mit dem #-Symbol können Sie Kommentare hinzufügen.

#!/bin/bash
# Dies ist ein Kommentar, der den Zweck des Skripts erläutert
echo gfg

8) Erstellen Sie ein Shell-Skript, das prüft, ob eine Datei im aktuellen Verzeichnis vorhanden ist.

Hier ist ein Skript, das prüft, ob eine Datei namens example.txt im aktuellen Verzeichnis vorhanden ist:

#!/bin/bash
file=example.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
echo Datei existiert: $file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=example.txt: Diese Zeile definiert die Variablendatei und weist ihr den Wert example.txt zu. Sie können dies durch den Namen der Datei ersetzen, nach der Sie suchen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Die Bedingung [ -e $file ] prüft, ob die durch den Wert der Dateivariablen angegebene Datei existiert. Das Flag -e wird verwendet, um zu prüfen, ob eine Datei vorhanden ist.
  4. echo Datei existiert: $datei: Wenn die Bedingung wahr ist (d. h. die Datei existiert), gibt diese Zeile eine Meldung aus, die angibt, dass die Datei existiert, zusammen mit dem Namen der Datei.
  5. else: Wenn die Bedingung falsch ist (d. h. die Datei existiert nicht), führt das Skript den Code unter dem else-Zweig aus.
  6. echo Datei nicht gefunden: $datei: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde, zusammen mit dem Namen der Datei.
  7. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei wird gefunden

Datei wird gefunden

9) Was ist der Unterschied zwischen einfachen Anführungszeichen (‘) und doppelten Anführungszeichen () beim Shell-Scripting?

Einfache Anführungszeichen (‘) und doppelte Anführungszeichen () werden zum Einschließen von Zeichenfolgen in Shell-Skripten verwendet, haben jedoch unterschiedliche Verhaltensweisen:

  • Einfache Anführungszeichen: Alles zwischen einfachen Anführungszeichen wird als Literalzeichenfolge behandelt. Variablennamen und die meisten Sonderzeichen werden nicht erweitert.
  • Doppelte Anführungszeichen: Variablen und bestimmte Sonderzeichen in doppelten Anführungszeichen werden erweitert. Der Inhalt unterliegt der Variablenersetzung und der Befehlsersetzung.

#!/bin/bash

abcd=Hallo
echo ‚$abcd‘ # Ausgabe: $abcd
echo $abcd # Ausgabe: Hallo

10) Wie können Sie Befehlszeilenargumente in einem Shell-Skript verwenden?

Kommandozeilenargumente sind Werte, die einem Skript bei seiner Ausführung bereitgestellt werden. Auf sie kann innerhalb des Skripts über spezielle Variablen wie $1, $2 usw. zugegriffen werden, wobei $1 das erste Argument, $2 das zweite Argument usw. darstellt.

Zum Beispiel: Wenn unser Skriptname in „example.sh“ steht

#!/bin/bash

echo Skriptname: $0
echo Erstes Argument: $1
echo Zweites Argument: $2

Wenn wir das Skript mit „.example.sh hello_1 hello_2“ ausführen, wird Folgendes ausgegeben:

CLI-Argumente

CLI-Argumente

11) Wie verwenden Sie die for-Schleife, um eine Liste von Werten zu durchlaufen?

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

Früchte = (Apfel, Banane, Kirsche, Dattel)
für Obst in ${fruits[@]}; Tun
echo Aktuelle Frucht: $fruit
Erledigt

Erläuterung:

Die Zeile „fruits=“ erstellt ein Array mit dem Namen „Früchte“ mit vier Elementen: Apfel, Banane, Kirsche und Dattel.

  • für Obst in ${fruits[@]}; do: Diese Zeile startet eine for-Schleife. Hier ist, was jeder Teil bedeutet:
  • für Obst: Dies deklariert eine Schleifenvariable namens Obst. In jeder Iteration der Schleife speichert Fruit den Wert des aktuellen Elements aus dem Fruit-Array.
  • ${fruits[@]}: Dies ist eine Array-Erweiterung, die alle Elemente aus dem Fruit-Array übernimmt. Die ${…}-Syntax stellt sicher, dass jedes Element als separates Element behandelt wird.
  • do: Dieses Schlüsselwort markiert den Anfang des Schleifenkörpers.
  • echo Aktuelle Frucht: $fruit: Innerhalb der Schleife verwendet diese Zeile den Echo-Befehl, um den aktuellen Wert der Schleifenvariablen Frucht anzuzeigen. Für jede Frucht im Array wird eine Meldung wie Aktuelle Frucht: Apfel ausgegeben.
  • done: Dieses Schlüsselwort markiert das Ende des Schleifenkörpers. Es teilt dem Skript mit, dass die Schleife beendet ist.
for-Schleife

for-Schleife

12) Schreiben Sie ein Shell-Skript, das mithilfe einer Schleife die Summe der ganzen Zahlen von 1 bis N berechnet.

Erstellen Sie einen Skriptnamen „example.sh“.

#!/bin/bash

echo Geben Sie eine Zahl (N) ein:
lies N
Summe=0
for (( i=1; i<=$N; i++ )); Tun
sum=$((sum + i))
Erledigt
echo Die Summe der ganzen Zahlen von 1 bis $N ist: $sum

Erläuterung:
Das Skript fordert Sie zunächst dazu auf, mithilfe von „read“ eine Zahl (N) einzugeben. Diese Zahl bestimmt, wie oft die Schleife ausgeführt wird.

  1. Die Variablensumme wird auf 0 initialisiert. Diese Variable verfolgt die Summe der Ganzzahlen.
  2. Die for-Schleife beginnt mit for (( i=1; i<=$N; i++ )). Diese Schleifenstruktur wird verwendet, um eine Reihe von Aktionen eine bestimmte Anzahl von Malen zu wiederholen, in diesem Fall von 1 bis zum Wert N.
  3. Innerhalb der Schleife passieren folgende Dinge:
    • i=1 setzt die Schleifenvariable i zu Beginn jeder Iteration auf 1.
    • Die Schleifenbedingung i<=$N prüft, ob i immer noch kleiner oder gleich der angegebenen Zahl N ist.
    • Wenn die Bedingung wahr ist, wird der Schleifenkörper ausgeführt.
    • sum=$((sum + i)) berechnet den neuen Wert von sum, indem der aktuelle Wert von i dazu addiert wird. Dadurch werden die ganzen Zahlen von 1 bis zum aktuellen i-Wert addiert.
  4. Nach jeder Iteration erhöht i++ den Wert von i um 1.
  5. Die Schleife läuft weiter, bis die Bedingung i<=$N falsch wird (wenn i größer als N wird).
  6. Sobald die Schleife beendet ist, zeigt das Skript die Summe der ganzen Zahlen von 1 bis zur eingegebenen Zahl N an.

439

13) Erstellen Sie ein Skript, das nach einem bestimmten Wort in einer Datei sucht und dessen Vorkommen zählt.

Erstellen Sie einen Skriptnamen „word_count.sh“.

#!/bin/bash

echo Geben Sie das Wort ein, nach dem gesucht werden soll:
Zielwort lesen
echo Geben Sie den Dateinamen ein:
Dateinamen lesen
count=$(grep -o -w $target_word $filename | wc -l)
echo Das Wort „$target_word“ kommt $count mal in „$filename“ vor.

Erläuterung:

  • echo Geben Sie das zu suchende Wort ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, ein Wort einzugeben, nach dem er in einer Datei suchen möchte.
  • read target_word: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens target_word.
  • echo Geben Sie den Dateinamen ein:: In dieser Zeile wird eine Meldung angezeigt, in der der Benutzer aufgefordert wird, den Namen der Datei einzugeben, in der er suchen möchte.
  • Dateinamen lesen: Diese Zeile liest die vom Benutzer bereitgestellten Eingaben und speichert sie in einer Variablen namens Dateiname.
  • count=$(grep -o -w $target_word $filename | wc -l): Diese Zeile erledigt die Hauptarbeit des Skripts. Lassen Sie es uns weiter aufschlüsseln:
    • grep -o -w $target_word $filename: Dieser Teil des Befehls sucht nach Vorkommen des target_word im angegebenen Dateinamen. Die Optionen -o und -w stellen sicher, dass nur Ganzwortübereinstimmungen gezählt werden.
    • |: Dies ist eine Pipe, die die Ausgabe des vorherigen Befehls übernimmt und als Eingabe an den nächsten Befehl sendet.
    • wc -l: Dieser Teil des Befehls verwendet den Befehl wc, um die Anzahl der Zeilen in der Eingabe zu zählen. Die Option -l zählt gezielt die Zeilen.
    • Der gesamte Befehl berechnet die Anzahl der Vorkommen des Zielworts in der Datei und weist diese Anzahl der Variablen coun zu

441

14) Erklären Sie die Unterschiede zwischen Standardausgabe (stdout) und Standardfehler (stderr).

Der Hauptunterschied zwischen Standardausgabe (stdout) und Standardfehler (stderr) ist wie folgt:

  • Standardausgabe (stdout): Dies ist der Standardausgabestream, in den die reguläre Ausgabe eines Befehls geht. Es wird standardmäßig auf dem Terminal angezeigt. Sie können es mit> in eine Datei umleiten.
  • Standardfehler (stderr): Dies ist der Ausgabestream für Fehlermeldungen und Warnungen. Es wird standardmäßig auch auf dem Terminal angezeigt. Sie können es mit 2> in eine Datei umleiten.

15) Erklären Sie das Konzept bedingter Anweisungen im Shell-Scripting.

Bedingte Anweisungen im Shell-Scripting ermöglichen es uns, Entscheidungen zu treffen und den Ablauf unseres Skripts auf der Grundlage bestimmter Bedingungen zu steuern. Sie ermöglichen unserem Skript, unterschiedliche Befehlssätze auszuführen, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist. Die primären bedingten Anweisungen beim Shell-Scripting sind die if-Anweisung, die elif-Anweisung (optional) und die else-Anweisung (optional).

Hier ist die Grundstruktur einer bedingten Anweisung im Shell-Scripting:

if [ Bedingung ]; Dann
# Befehle, die ausgeführt werden sollen, wenn die Bedingung wahr ist
elif [ another_condition ]; Dann
# Befehle, die ausgeführt werden sollen, wenn another_condition wahr ist (optional)
anders
# Befehle, die ausgeführt werden sollen, wenn keine der Bedingungen wahr ist (optional)
Sei

Erläuterung:

  • [ Bedingung ] = Befehl, der die Bedingung auswertet und einen Exit-Status „wahr“ (0) oder „falsch“ (ungleich Null) zurückgibt.
  • then = Es handelt sich um ein Schlüsselwort, das angibt, dass die darauf folgenden Befehle ausgeführt werden, wenn die Bedingung „true“ ergibt.
  • elif = (Abkürzung für else if) Dies ist ein Abschnitt, der es uns ermöglicht, zusätzliche zu überprüfende Bedingungen anzugeben.
  • else = es ist ein Abschnitt, der Befehle enthält, die ausgeführt werden, wenn keine der Bedingungen wahr ist.
  • fi = Es ist ein Schlüsselwort, das das Ende des bedingten Blocks markiert.

16) Wie liest man Zeilen aus einer Datei in einem Shell-Skript?

Zu Zeilen lesen Aus einer Datei innerhalb eines Shell-Skripts können wir verschiedene Methoden verwenden, aber ein gängiger Ansatz ist die Verwendung einer While-Schleife in Kombination mit dem Lesebefehl. So können wir es machen:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Überprüfen Sie, ob die Datei vorhanden ist
if [ -e $file ]; Dann
while IFS= read -r line; Tun
echo Zeile gelesen: $line
# Fügen Sie hier Ihre Verarbeitungslogik hinzu
erledigt <$file
anders
echo Datei nicht gefunden: $file
Sei

Erläuterung:

  1. #!/bin/bash: Dies ist die Shebang-Zeile, die den Interpreter (/bin/bash) angibt, der zum Ausführen des Skripts verwendet werden soll.
  2. file=/home/jayeshkumar/jayesh.txt: Diese Zeile definiert die Variablendatei und weist den vollständigen Pfad zur Datei jayesh.txt im Verzeichnis /home/jayeshkumar zu. Ändern Sie diesen Pfad so, dass er mit dem tatsächlichen Pfad der Datei übereinstimmt, die Sie lesen möchten.
  3. if [ -e $file ]; then: Diese Zeile beginnt eine if-Anweisung. Es prüft, ob die durch die Variable $file angegebene Datei existiert. Das Flag -e prüft, ob eine Datei vorhanden ist.
  4. while IFS= read -r line; do: Diese Zeile initiiert eine While-Schleife, die Zeilen aus der Datei liest.
    • IFS=: Das IFS (Internal Field Separator) wird auf einen leeren Wert gesetzt, um führende und nachfolgende Leerzeichen beizubehalten.
    • read -r line: Dies liest die aktuelle Zeile aus der Datei und speichert sie in der Variablen line.
  5. echo Zeile gelesen: $line: Diese Zeile gibt den Inhalt der Zeile aus, die aus der Datei gelesen wurde. Die Variable $line enthält den Inhalt der aktuellen Zeile.
  6. # Fügen Sie hier Ihre Verarbeitungslogik hinzu: Dies ist ein Platzhalterkommentar, in dem Sie Ihre eigene Logik zur Verarbeitung jeder Zeile hinzufügen können. Beispielsweise können Sie die Zeile analysieren, Informationen extrahieren oder bestimmte Aktionen basierend auf dem Inhalt ausführen.
  7. done <$file: Dies markiert das Ende der while-Schleife. Das < $file leitet den Inhalt der Datei um, damit er von der Schleife gelesen werden kann.
  8. else: Wenn die Datei nicht existiert (die Bedingung in der if-Anweisung ist falsch), führt das Skript den Code unter dem else-Zweig aus.
  9. echo Datei nicht gefunden: $file: Diese Zeile gibt eine Fehlermeldung aus, die angibt, dass die angegebene Datei nicht gefunden wurde.
  10. fi: Diese Zeile markiert das Ende der if-Anweisung.
Datei lesen

Datei lesen

Hier haben wir „“ verwendet pwd ` Befehl, um den Pfad des aktuellen Verzeichnisses abzurufen.

17) Schreiben Sie eine Funktion in ein Shell-Skript, die die Fakultät einer bestimmten Zahl berechnet.

Hier ist das Skript, dasBerechnen Sie die Fakultäteiner gegebenen Zahl.

#!/bin/bash
# Definieren Sie eine Funktion zur Berechnung der Fakultät
berechne_faktorial() {
num=$1
Tatsache=1
for ((i=1; i<=num; i++)); Tun
fact=$((fact * i))
Erledigt
echo $fact
}
# Fordern Sie den Benutzer auf, eine Nummer einzugeben
echo Geben Sie eine Zahl ein:
lese input_num
# Rufen Sie die Funktion „calcure_factorial“ mit der Eingabenummer auf
factial_result=$(calculate_factorial $input_num)
# Zeigen Sie das faktorielle Ergebnis an
echo Factorial von $input_num ist: $factorial_result

Erläuterung:

  1. Das Skript beginnt mit der Shebang-Zeile #!/bin/bash, um den Interpreter anzugeben.
  2. berechne_faktorial() ist als Funktion definiert. Es benötigt ein Argument, num, das die Zahl ist, für die die Fakultät berechnet werden muss.
  3. Innerhalb der Funktion wird fact auf 1 initialisiert. Diese Variable speichert das Fakultätsergebnis.
  4. Die for-Schleife iteriert von 1 bis zur angegebenen Zahl (num). In jeder Iteration multipliziert es den aktuellen Wert von fact mit dem Schleifenindex i.
  5. Nach Abschluss der Schleife enthält die Faktenvariable die berechnete Fakultät.
  6. Das Skript fordert den Benutzer mit „read“ zur Eingabe einer Zahl auf.
  7. Die Funktion „calcure_factorial“ wird mit der vom Benutzer angegebenen Zahl aufgerufen und das Ergebnis wird in der Variablen „factorial_result“ gespeichert.
  8. Abschließend zeigt das Skript das berechnete Fakultätsergebnis an.
Fakultät

Fakultät

18) Wie gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um?

In einem Shell-Skript können Sie Signale wie Strg+C (auch bekannt als SIGINT) mit dem Trap-Befehl verarbeiten. Strg+C generiert ein SIGINT-Signal, wenn der Benutzer es drückt, um das laufende Skript oder Programm zu unterbrechen. Mithilfe des Trap-Befehls können Sie Aktionen festlegen, die ausgeführt werden sollen, wenn ein bestimmtes Signal empfangen wird. So gehen Sie mit Signalen wie Strg+C in einem Shell-Skript um:

#!/bin/bash
Aufräumen() {
echo Skript unterbrochen. Bereinigung wird durchgeführt…
# Fügen Sie hier Ihre Bereinigungsaktionen hinzu
Ausgang 1
}
# Richten Sie eine Falle ein, um die Bereinigungsfunktion aufzurufen, wenn Strg+C (SIGINT) empfangen wird
Fallenbereinigung SIGINT
# Rest Ihres Skripts
echo Laufen…
Schlaf 10
echo Fertig.

Der Umgang mit Signalen ist wichtig, um Skripte robust zu machen und sicherzustellen, dass sie unerwartete Unterbrechungen ordnungsgemäß verarbeiten. Sie können die Bereinigungsfunktion an Ihre spezifischen Anforderungen anpassen, z. B. Dateien schließen, Prozesse stoppen oder Informationen protokollieren, bevor das Skript beendet wird.

Erläuterung:

  1. #!/bin/bash: Diese Shebang-Zeile gibt den Interpreter an, der zum Ausführen des Skripts verwendet werden soll.
  2. cleanup() { … }: Dies definiert eine Funktion namens cleanup. In diese Funktion können Sie alle Aktionen einschließen, die ausgeführt werden müssen, wenn das Skript unterbrochen wird, z. B. das Schließen von Dateien, das Freigeben von Ressourcen oder das Durchführen anderer Bereinigungsaufgaben.
  3. trap cleanup SIGINT: Der trap-Befehl wird zum Einrichten eines Signalhandlers verwendet. In diesem Fall wird angegeben, dass die Bereinigungsfunktion ausgeführt werden soll, wenn das SIGINT-Signal (Strg+C) empfangen wird.
  4. echo Running…, sleep 10, echo Finished.: Dies sind nur Beispielbefehle, um die Ausführung eines Skripts zu simulieren.

446

19) Erstellen Sie ein Skript, das nach doppelten Zeilen in einer Textdatei sucht und diese entfernt.

Hier ist unser Linux-Skript, in dem wir doppelte Zeilen aus einer Textdatei entfernen.

#!/bin/bash
input_file=input.txt
Ausgabedatei=Ausgabe.txt
$input_file | sortieren uniq> $output_file
echo Doppelte Zeilen erfolgreich entfernt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Variable input_file wird auf den Namen der Eingabedatei gesetzt, die doppelte Zeilen enthält (ändern Sie diesen in Ihren tatsächlichen Namen der Eingabedatei).
  3. Die Variable „output_file“ wird auf den Namen der Ausgabedatei gesetzt, aus der die Duplikate entfernt werden (ändern Sie diesen in den gewünschten Namen der Ausgabedatei).
  4. Das Skript verwendet den Sortierbefehl, um die Zeilen in der Eingabedatei zu sortieren. Durch das Sortieren der Zeilen wird sichergestellt, dass doppelte Zeilen gruppiert werden.
  5. Die sortierten Zeilen werden dann durch den Befehl uniq geleitet, der aufeinanderfolgende doppelte Zeilen entfernt. Die Ausgabe dieses Prozesses wird in die Ausgabedatei umgeleitet.
  6. Nachdem die Duplikate entfernt wurden, gibt das Skript eine Erfolgsmeldung aus.
Entfernen doppelter Zeilen

Entfernen doppelter Zeilen

Hier verwenden wir „ Katze ` um den Text in der Textdatei anzuzeigen.

20) Schreiben Sie ein Skript, das ein sicheres Zufallspasswort generiert.

Hier ist unser Skript zum Generieren eines sicheren Zufallspassworts.

#!/bin/bash
# Funktion zum Generieren eines zufälligen Passworts
generiere Passwort() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Rufen Sie die Funktion auf und speichern Sie das generierte Passwort
passwort=$(generate_password)
echo Generiertes Passwort: $password

Hinweis: Der Benutzer kann die Länge seines Passworts entsprechend ändern, indem er die Zahl „12“ ersetzt.

Erläuterung:

  1. Das Skript beginnt mit einem Shebang (#!/bin/bash), der angibt, dass es mit der Bash-Shell interpretiert werden soll.
  2. Die Funktion „generate_password“ ist so definiert, dass sie ein zufälliges Passwort generiert. So funktioniert das:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • falten -w 12 unterteilt die gefilterten Zufallsdaten in Zeilen mit einer Breite von jeweils 12 Zeichen.
    • head -n 1 wählt die erste Zeile aus und gibt uns effektiv eine zufällige Folge von Zeichen der Länge 12.
  3. Der Variable „password“ wird das Ergebnis des Aufrufs der Funktion „generate_password“ zugewiesen.
  4. Abschließend wird das generierte Passwort mittels Echo angezeigt.

448

21) Schreiben Sie ein Shell-Skript, das die Gesamtgröße aller Dateien in einem Verzeichnis berechnet.

Hier ist ein Shell-Skript zur Berechnung der Gesamtgröße aller Dateien in einem Verzeichnis.

#!/bin/bash
Verzeichnis=/Pfad/zu/Ihrem/Verzeichnis
total_size=$(du -csh $directory | grep total | awk ‚{print $1}‘)
echo Gesamtgröße der Dateien in $directory: $total_size

Erläuterung:

  1. Das Skript beginnt mit dem Befehl #!/bin/bash, der darauf hinweist, dass es mithilfe der Bash-Shell interpretiert werden soll.
  2. Die Verzeichnisvariable wird auf den Pfad des Verzeichnisses gesetzt, für das Sie die Gesamtdateigröße berechnen möchten. Ersetzen Sie /path/to/your/directory durch den tatsächlichen Pfad.
  3. Der Befehl du wird verwendet, um die Dateispeichernutzung abzuschätzen. Die verwendeten Optionen sind:
    • -c: Erzeuge eine Gesamtsumme.
    • -s: Zeigt nur die Gesamtgröße des angegebenen Verzeichnisses an.
    • -h: Druckgrößen in einem für Menschen lesbaren Format (z. B. KB, MB, GB).
  4. Die Ausgabe von du wird an grep total weitergeleitet, um die Zeile herauszufiltern, die die Gesamtgröße enthält.
  5. awk „{print $1}“ wird verwendet, um das erste Feld (Gesamtgröße) aus der Zeile zu extrahieren.
  6. Die berechnete Gesamtgröße wird in der Variablen total_size gespeichert.
  7. Abschließend zeigt das Skript mithilfe von Echo die Gesamtgröße an.
Gesamtgröße der Dateien

Gesamtgröße der Dateien

Hier haben wir „“ verwendet pwd ` Befehl, um den aktuellen Verzeichnispfad anzuzeigen.

22) Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting.

Besonderheit `if`Staiftement `elif`-Erklärung
Zweck Erklären Sie den Unterschied zwischen if- und elif-Anweisungen beim Shell-Scripting. Stellt alternative Bedingungen bereit, um zu überprüfen, ob die anfängliche If-Bedingung falsch ist.
Verwendung Wird für den Anfangszustand verwendet. Wird nach der anfänglichen if-Bedingung verwendet, um zusätzliche Bedingungen zu überprüfen.
Anzahl der Blöcke Kann nur einen if-Block haben. Kann mehrere elif-Blöcke haben, aber nur einen else-Block (optional).
Ausführung Führt den mit der if-Anweisung verknüpften Codeblock aus, wenn die Bedingung wahr ist. Wenn die Bedingung falsch ist, wird der else-Block (falls vorhanden) ausgeführt (optional). Überprüft jede Elif-Bedingung der Reihe nach. Wenn eine elif-Bedingung wahr ist, wird der entsprechende Codeblock ausgeführt und das Skript verlässt den gesamten bedingten Block. Wenn keine der elif-Bedingungen wahr ist, wird der else-Block (falls vorhanden) ausgeführt.
Verschachtelte Strukturen Kann in anderen if-, elif- oder else-Blöcken verschachtelt werden. Kann nicht in einem anderen elif-Block verschachtelt werden, kann aber in einem if- oder else-Block verwendet werden.

Lassen Sie es uns anhand eines Beispiels verstehen.

#!/bin/bash
Zahl=5
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
anders
echo $number ist nicht größer als 10
Sei
Echo ——–
if [ $number -gt 10 ]; Dann
echo $number ist größer als 10
elif [ $number -eq 10 ]; Dann
echo $number ist gleich 10
anders
echo $number ist kleiner als 10
Sei

Erläuterung:

In diesem Beispiel prüft der erste if-Block, ob die Zahl größer als 10 ist. Wenn nicht, gibt er eine Meldung aus, die angibt, dass die Zahl nicht größer als 10 ist. Der zweite Block mit elif-Anweisungen prüft nacheinander mehrere Bedingungen, bis eine davon wahr ist. Da in diesem Fall der Wert von number 5 ist, lautet die Ausgabe:

if_elif Unterschied

if_elif Unterschied

23) Wie nutzt man eine While-Schleife, um Befehle wiederholt auszuführen?

Bei der Shell-Skripterstellung wird eine While-Schleife verwendet, um eine Reihe von Befehlen wiederholt auszuführen, solange eine bestimmte Bedingung erfüllt ist. Die Schleife führt die Befehle so lange aus, bis die Bedingung falsch wird.

Hier ist die grundlegende Syntax einer While-Schleife:

while [ Bedingung ]; Tun
# Auszuführende Befehle
Erledigt

Erläuterung:

  1. Die „while“-Schleife beginnt mit dem Schlüsselwort „while“, gefolgt von einer in eckigen Klammern eingeschlossenen Bedingung „[ ]“.
  2. Der Schleifenkörper, der die auszuführenden Befehle enthält, ist in die Schlüsselwörter „do“ und „done“ eingeschlossen.
  3. Die Schleife prüft zunächst die Bedingung. Wenn die Bedingung wahr ist, werden die Befehle im Schleifenkörper ausgeführt. Nachdem der Schleifenkörper ausgeführt wurde, wird die Bedingung erneut überprüft und der Vorgang wiederholt, bis die Bedingung falsch wird.

Beispiel: Wenn wir Zahlen von 1 bis 5 drucken möchten

#!/bin/bash
Zähler=1
while [ $counter -le 5 ]; Tun
Echo-Nummer: $counter
counter=$((counter + 1))
Erledigt

Erläuterung:

  • Die Zählervariable wird auf 1 gesetzt.
  • Die while-Schleife prüft, ob der Wert von counter kleiner oder gleich 5 ist. Solange diese Bedingung erfüllt ist, wird die Schleife weiter ausgeführt.
  • Innerhalb der Schleife wird der aktuelle Wert des Zählers mithilfe von Echo ausgegeben.
  • Der Zähler wird mit dem Ausdruck $((Zähler + 1)) um 1 erhöht.
while-Schleife

while-Schleife

24) Erstellen Sie ein Shell-Skript, das alle leeren Dateien in einem Verzeichnis findet und auflistet.

Shell-Skript, mit dem Sie mithilfe der Befehle „find“ und „stat“ alle leeren Dateien in einem Verzeichnis suchen und auflisten können:

#!/bin/bash
Verzeichnis=$1″
if [ -z $directory ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann
echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei
echo Leere Dateien im $directory:
finde $directory -type f -empty

Erläuterung:

  1. ` #!/bin/bash „: Dies wird als Shebang bezeichnet und weist das Betriebssystem an, die Bash-Shell zum Interpretieren und Ausführen des Skripts zu verwenden.
  2. ` Verzeichnis=$1″ `: Diese Zeile weist der Variablen ` das erste Befehlszeilenargument (bezeichnet mit $1) zu Verzeichnis `.
  3. ` if [ -z $directory ]; Dann `: Diese Zeile startet eine if-Anweisung, die prüft, ob das ` Verzeichnis ` Variable ist leer (-z testet auf eine leere Zeichenfolge).
  4. ` Echo-Nutzung: $0 `: Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung aus, wobei ` 0 $ ` steht für den Namen des Skripts.
  5. ` Ausgang 1 `: Diese Zeile beendet das Skript mit dem Exit-Code ` 1 `, was auf einen Fehler hinweist.
  6. ` Sei `: Diese Zeile markiert das Ende des ` Wenn ` Aussage.
  7. ` Wenn [ ! -d $Verzeichnis ]; Dann `: Dies startet eine weitere if-Anweisung, um zu prüfen, ob das angegebene Verzeichnis existiert (` -D ` testet für ein Verzeichnis).
  8. ` echo Fehler: „$directory“ ist kein gültiges Verzeichnis. `: Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. ` Ausgang 1 `: Beendet das Skript mit dem Exit-Code ` 1 `.
  10. ` Sei `: Markiert das Ende des zweiten ` wenn` Stellungnahme.
  11. ` echo Leere Dateien im $directory: `: Wenn bisher alles gültig ist, gibt diese Zeile eine Meldung aus, die angibt, dass das Skript leere Dateien im angegebenen Verzeichnis auflistet.
  12. ` finde $directory -type f -empty `: Diese Zeile verwendet das ` finden ` Befehl zum Suchen nach leeren Dateien (` -leer `) vom Typ reguläre Dateien (` -Typ f `) im angegebenen Verzeichnis. Anschließend werden diese leeren Dateien aufgelistet.
Leere Dateien finden

Leere Dateien finden

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/ verwendet

25) Was ist der Zweck des Lesebefehls beim Shell-Scripting?

Mit dem Lesebefehl beim Shell-Scripting fragt das Skript Sie nach Informationen. Es ist, als würde Ihnen ein Computer eine Frage stellen und auf Ihre Antwort warten. Dies ist nützlich für Skripte, bei denen Sie etwas eingeben müssen oder wenn das Skript mit Informationen aus Dateien arbeiten muss. Der Lesebefehl hilft dem Skript, anzuhalten und auf Ihre Eingabe zu warten. Anschließend kann es diese Informationen verwenden, um weitere Aufgaben im Skript auszuführen.

Syntax des Lesebefehls:

read variable_name>

Beispiel : Wenn wir den Namen als Eingabe vom Benutzer verwenden möchten, um ihn zu drucken.

#!/bin/bash
echo Bitte geben Sie Ihren Namen ein:
Namen lesen
echo Hallo, $name!

453

lies nam

Zusammenfassend lässt sich sagen, dass der Lesebefehl verwendet wird, um Benutzereingaben oder Daten aus Dateien in Shell-Skripten zu erfassen, wodurch die Skripte interaktiver und vielseitiger werden.

26) Schreiben Sie ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

Hier ist ein Shell-Skript, das alle Dateinamen in einem Verzeichnis in Kleinbuchstaben umwandelt.

#!/bin/bash
Verzeichnis=$1″
if [ -z $directory ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei

Wenn [ ! -d $Verzeichnis ]; Dann

echo Fehler: „$directory“ ist kein gültiges Verzeichnis.
Ausgang 1
Sei

cd $verzeichnis || Ausgang 1

für Datei in *; Tun
if [ -f $file ]; Dann
newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘)
[ $file != $newname ] && mv $file $newname
Sei
Erledigt

Erläuterung:

  1. #!/bin/bash : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. Verzeichnis=$1″ : Diese Zeile weist das erste Befehlszeilenargument dem Variablenverzeichnis zu.
  3. if [ -z $directory ]; Dann : Diese Zeile prüft, ob die Verzeichnisvariable leer ist (kein Argument angegeben, wenn das Skript ausgeführt wird).
  4. Echo-Nutzung: $0 : Wenn das Verzeichnis leer ist, gibt diese Zeile eine Nutzungsmeldung mit dem Namen des Skripts ($0) aus.
  5. Ausgang 1 : Diese Zeile beendet das Skript mit dem Exit-Code 1, was darauf hinweist, dass ein Fehler aufgetreten ist.
  6. F i: Dies markiert das Ende der ersten if-Anweisung.
  7. Wenn [ ! -d $Verzeichnis ]; Dann : Diese Zeile prüft, ob das angegebene Verzeichnis nicht existiert (-d testet ein Verzeichnis).
  8. echo Fehler: „$directory“ ist kein gültiges Verzeichnis. : Wenn das angegebene Verzeichnis nicht existiert, gibt diese Zeile eine Fehlermeldung aus.
  9. Ausgang 1 : Beendet das Skript mit dem Exit-Code 1.
  10. Sei : Markiert das Ende der zweiten if-Anweisung.
  11. cd $verzeichnis || Ausgang 1 : Ändert das aktuelle Arbeitsverzeichnis in das angegebene Verzeichnis. Wenn der Verzeichniswechsel fehlschlägt (z. B. Verzeichnis nicht vorhanden), wird das Skript mit einem Fehlercode beendet.
  12. für Datei in *; Tun: ICH für Datei in *; Tun: löst eine Schleife aus, die alle Elemente im aktuellen Verzeichnis durchläuft (* entspricht allen Dateinamen).
  13. if [ -f $file ]; Dann : Überprüft, ob das aktuelle Schleifeniterationselement eine reguläre Datei ist (-f testet auf eine reguläre Datei).
  14. newname=$(echo $file | tr ‚A-Z‘ ‚a-z‘) : Wandelt den aktuellen Dateinamen ($file) mit dem Befehl tr in Kleinbuchstaben um und speichert das Ergebnis in der Variablen newname.
  15. [ $file != $newname ] && mv $file $newname : Vergleicht den ursprünglichen Dateinamen mit dem neuen Dateinamen in Kleinbuchstaben. Wenn sie unterschiedlich sind, wird die Datei mit dem Befehl mv umbenannt.
  16. Sei : Markiert das Ende der inneren if-Anweisung.
  17. Erledigt : Markiert das Ende der Schleife.

454

Notiz : Wir müssen beim Ausführen des Skripts ein Verzeichnis als Argument angeben. Hier haben wir den Pfad des aktuellen Verzeichnisses home/jayeshkumar/test verwendet

27) Wie können Sie arithmetische Operationen innerhalb eines Shell-Skripts verwenden?

Arithmetische Operationen können innerhalb eines Shell-Skripts mithilfe verschiedener integrierter Methoden ausgeführt werden. Die Shell bietet Mechanismen für einfache arithmetische Berechnungen mithilfe der arithmetischen Erweiterung wie:

  1. Arithmetische Erweiterung ($((…)))
  2. Verwenden des expr-Befehls
  3. Verwenden des let-Befehls

Hier ist unser Shell-Skript, das alle drei Methoden für arithmetische Operationen erklärt.

#!/bin/bash
num1=10
num2=5

#Arithmetische Erweiterung ($((…)))

Ergebnis=$((num1 + num2))
echo Summe: $result

#Verwenden des expr-Befehls

sum=$(expr $num1 + $num2)
echo Summe: $sum

#Verwenden des let-Befehls

sei sum = num1 + num2
echo Summe: $sum

Erläuterung:

  1. `#!/bin/bash` : Dies ist der Knaller, der angibt, dass das Skript mithilfe der Bash-Shell interpretiert werden soll.
  2. `num1=10` und ` num2=5` : Diese Zeilen weisen den Variablen ` die Werte 10 und 5 zu num1 ` und ` num2 ` bzw.
  3. `#Arithmetische Erweiterung ($((…)))` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die arithmetische Erweiterung demonstriert.
  4. `result=$((num1 + num2))` : Diese Zeile verwendet eine arithmetische Erweiterung, um die Summe von ` zu berechnen num1 ` und ` num2 ` und speichert das Ergebnis im ` Ergebnis ` variabel.
  5. „echo Summe: $result“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Ergebnis ` variabel.
  6. `#Verwenden des expr-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert Ausdruck ` Befehl für arithmetische Operationen.
  7. `sum=$(expr $num1 + $num2)` : Diese Zeile verwendet das ` Ausdruck ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und speichert das Ergebnis im ` Summe ` variabel. Beachten Sie, dass das ` Ausdruck Der Befehl ` erfordert Leerzeichen um die Operatoren.
  8. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
  9. `#Verwenden des let-Befehls` : Dies ist ein Kommentar, der den Anfang des Abschnitts angibt, der die Verwendung des „`“ demonstriert lassen ` Befehl für arithmetische Operationen.
  10. `Lass Summe = num1 + num2″` : Diese Zeile verwendet das ` lassen ` Befehl zur Berechnung der Summe von ` num1 ` und ` num2 ` und weist das Ergebnis dem ` zu Summe ` variabel. Das ` lassen Für den Befehl ` sind keine Leerzeichen um die Operatoren erforderlich.
  11. „Echo-Summe: $sum“. : Diese Zeile gibt die berechnete Summe unter Verwendung des im ` gespeicherten Werts aus Summe ` variabel.
Arithmetik

Arithmetik

28) Erstellen Sie ein Skript, das prüft, ob ein Netzwerkhost erreichbar ist.

Hier ist ein einfaches Shell-Skript, das mithilfe des Ping-Befehls prüft, ob ein Netzwerkhost erreichbar ist:

#!/bin/bash
host=$1″
if [ -z $host ]; Dann
Echo-Nutzung: $0
Ausgang 1
Sei
ping -c 4 $host

wenn [ $? -eq 0 ]; Dann
echo $host ist erreichbar.
anders
echo $host ist nicht erreichbar.
Sei

Erläuterung:

  1. Es nimmt einen Hostnamen oder eine IP-Adresse als Argument und prüft, ob das Argument angegeben wird.
  2. Wenn kein Argument angegeben wird, wird eine Nutzungsmeldung angezeigt und der Vorgang beendet.
  3. Es verwendet den Ping-Befehl mit der Option -c 4, um vier ICMP-Echo-Anfragen an den angegebenen Host zu senden.
  4. Nachdem der Ping-Befehl ausgeführt wurde, prüft er den Exit-Status ($?). Wenn der Exit-Status 0 ist, bedeutet dies, dass der Host erreichbar ist und das Skript eine Erfolgsmeldung ausgibt. Andernfalls wird eine Fehlermeldung ausgegeben.

456

Notiz : Wir müssen beim Ausführen des Skripts einen Hostnamen als Argument angeben. Hier haben wir google.com verwendet

29) Schreiben Sie ein Shell-Skript, um das größte Element in einem Array zu finden:

Hier ist ein Shell-Skript, um das größte Element in einem Array zu finden.

#!/bin/bash
# Deklarieren Sie ein Array
array=(3 56 24 89 67)

# Initialisieren Sie eine Variable, um den Maximalwert zu speichern, beginnend mit dem ersten Element

max=${array[0]}

# Durch das Array iterieren

für num in ${array[@]}; Tun

# Vergleichen Sie jedes Element mit dem aktuellen Maximum

if ((num> max)); Dann
max=$num
Sei
Erledigt

# Drucken Sie den Maximalwert aus

echo Das maximale Element im Array ist: $max

Erläuterung:

  1. ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.
  2. ` array=(3 56 24 89 67) `: Das Array wird deklariert und mit Werten initialisiert.
  3. ` max=${array[0]} `: `max` wird mit dem ersten Element des Arrays initialisiert.
  4. ` für num in ${array[@]}; Tun „: Eine „for“-Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.
  5. ` if ((num> max)); Dann „: Eine „if“-Anweisung prüft, ob das aktuelle Element „num“ größer als das aktuelle Maximum „max“ ist.
  6. ` max=$num`: If`num ` ist größer als `max`, `max` wird mit dem Wert von num aktualisiert.
  7. ` Erledigt `: Die `for`-Schleife ist geschlossen.
  8. ` echo Das maximale Element im Array ist: $max `: Abschließend gibt das Skript den im Array gefundenen Maximalwert aus.
461

größte Zahl

30) Schreiben Sie ein Skript, um die Summe der Elemente in einem Array zu berechnen.

#!/bin/bash

# Deklarieren Sie ein Array

array=(1 65 22 19 94)

# Initialisieren Sie eine Variable, um die Summe zu speichern

Summe=0

# Durchlaufen Sie das Array und fügen Sie jedes Element zur Summe hinzu

für num in ${array[@]}; Tun
am=$((am + am))
Erledigt

# Drucken Sie die Summe aus

echo Die Summe der Elemente im Array ist: $sum

Erläuterung:

` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.

` array=(1 65 22 19 94) `: Das Array wird deklariert und mit Werten initialisiert.

` Summe=0 `:` Summe ` wird auf Null initialisiert, um die Summe der Elemente zu speichern.

` für num in ${array[@]}; Tun `: A` für Die Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.

` am=$((am + am)) `: Innerhalb der Schleife jedes Element ` Auf eins ` wird dem ` hinzugefügt Summe ` variabel.

` Erledigt `: Das ` für ` Schleife ist geschlossen.

„echo Die Summe der Elemente im Array ist: $sum“: Schließlich gibt das Skript die Summe aller Elemente im Array aus.

462

Summe der Elemente

Erfahren Sie mehr über Shell-Skripte

Abschluss

Wir alle wissen, dass Shell-Skripte sehr nützlich sind, um die Arbeitsproduktivität zu steigern und auch Zeit zu sparen. In diesem Artikel haben wir es also behandelt 30 sehr nützliche und am meisten betrügerische Beispiele für Shell-Skripte . Wir hoffen, dass diese vollständige Anleitung zum Beispiel für Shell-Skripte Ihnen hilft, alles über die Shell-Skripte zu verstehen.




Ausgang 1
Sei
ping -c 4 $host

wenn [ $? -eq 0 ]; Dann
echo $host ist erreichbar.
anders
echo $host ist nicht erreichbar.
Sei

Erläuterung:

  1. Es nimmt einen Hostnamen oder eine IP-Adresse als Argument und prüft, ob das Argument angegeben wird.
  2. Wenn kein Argument angegeben wird, wird eine Nutzungsmeldung angezeigt und der Vorgang beendet.
  3. Es verwendet den Ping-Befehl mit der Option -c 4, um vier ICMP-Echo-Anfragen an den angegebenen Host zu senden.
  4. Nachdem der Ping-Befehl ausgeführt wurde, prüft er den Exit-Status ($?). Wenn der Exit-Status 0 ist, bedeutet dies, dass der Host erreichbar ist und das Skript eine Erfolgsmeldung ausgibt. Andernfalls wird eine Fehlermeldung ausgegeben.

456

Notiz : Wir müssen beim Ausführen des Skripts einen Hostnamen als Argument angeben. Hier haben wir google.com verwendet

29) Schreiben Sie ein Shell-Skript, um das größte Element in einem Array zu finden:

Hier ist ein Shell-Skript, um das größte Element in einem Array zu finden.

#!/bin/bash
# Deklarieren Sie ein Array
array=(3 56 24 89 67)

# Initialisieren Sie eine Variable, um den Maximalwert zu speichern, beginnend mit dem ersten Element

max=${array[0]}

# Durch das Array iterieren

für num in ${array[@]}; Tun

# Vergleichen Sie jedes Element mit dem aktuellen Maximum

if ((num> max)); Dann
max=$num
Sei
Erledigt

# Drucken Sie den Maximalwert aus

echo Das maximale Element im Array ist: $max

Erläuterung:

  1. ` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.
  2. ` array=(3 56 24 89 67) `: Das Array wird deklariert und mit Werten initialisiert.
  3. ` max=${array[0]} `: `max` wird mit dem ersten Element des Arrays initialisiert.
  4. ` für num in ${array[@]}; Tun „: Eine „for“-Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.
  5. ` if ((num> max)); Dann „: Eine „if“-Anweisung prüft, ob das aktuelle Element „num“ größer als das aktuelle Maximum „max“ ist.
  6. ` max=$num`: If`num ` ist größer als `max`, `max` wird mit dem Wert von num aktualisiert.
  7. ` Erledigt `: Die `for`-Schleife ist geschlossen.
  8. ` echo Das maximale Element im Array ist: $max `: Abschließend gibt das Skript den im Array gefundenen Maximalwert aus.
461

größte Zahl

30) Schreiben Sie ein Skript, um die Summe der Elemente in einem Array zu berechnen.

#!/bin/bash

# Deklarieren Sie ein Array

array=(1 65 22 19 94)

# Initialisieren Sie eine Variable, um die Summe zu speichern

Summe=0

q2 Monate

# Durchlaufen Sie das Array und fügen Sie jedes Element zur Summe hinzu

für num in ${array[@]}; Tun
am=$((am + am))
Erledigt

# Drucken Sie die Summe aus

echo Die Summe der Elemente im Array ist: $sum

Erläuterung:

` #!/bin/bash `: Die Shebang-Zeile gibt an, dass das Skript mit der Bash-Shell interpretiert werden soll.

` array=(1 65 22 19 94) `: Das Array wird deklariert und mit Werten initialisiert.

` Summe=0 `:` Summe ` wird auf Null initialisiert, um die Summe der Elemente zu speichern.

` für num in ${array[@]}; Tun `: A` für Die Schleife wird verwendet, um die Elemente des Arrays zu durchlaufen.

` am=$((am + am)) `: Innerhalb der Schleife jedes Element ` Auf eins ` wird dem ` hinzugefügt Summe ` variabel.

` Erledigt `: Das ` für ` Schleife ist geschlossen.

„echo Die Summe der Elemente im Array ist: $sum“: Schließlich gibt das Skript die Summe aller Elemente im Array aus.

462

Summe der Elemente

Erfahren Sie mehr über Shell-Skripte

Abschluss

Wir alle wissen, dass Shell-Skripte sehr nützlich sind, um die Arbeitsproduktivität zu steigern und auch Zeit zu sparen. In diesem Artikel haben wir es also behandelt 30 sehr nützliche und am meisten betrügerische Beispiele für Shell-Skripte . Wir hoffen, dass diese vollständige Anleitung zum Beispiel für Shell-Skripte Ihnen hilft, alles über die Shell-Skripte zu verstehen.