Was bedeutet IFS beim Bash-Scripting?

Beim Bash-Scripting ist das IFS das interne Feldtrennzeichen oder Token-Trennzeichen, das zum Aufteilen der Zeichenfolgen verwendet wird. Es teilt dem System mit, wie die Zeichenfolge auf dem Bildschirm gedruckt wird. Standardmäßig sind Leerzeichen, Tabulator und neue Zeile die Feldtrennzeichen des IFS, dies kann jedoch für Leerzeichen wie „:“, „,” und andere Charaktere. Es wird hauptsächlich in den Schleifen verwendet, um die Ausgabe der Strings zu manipulieren, da es im Bash-Skript keinen integrierten Mechanismus gibt, um eine solche Aufgabe auszuführen.

Dieser Artikel erläutert die Bedeutung und Funktionsweise des IFS in Bash-Skriptdateien.

  • IFS in der Bash-Skriptdatei
  • Beispiel 1: Einfaches Bash-Skript ohne IFS ausführen
  • Beispiel 2: Bash-Skript mit „IFS“ ausführen
  • Beispiel 3: Ausführen eines Bash-Skripts mit IFS aus Benutzereingaben
  • Beispiel 4: Ausführen eines Bash-Skripts mit IFS über Positionsparameter
  • Beispiel 5: Ausführen eines Skripts mit IFS=“-“ über die Befehlszeile

IFS in der Bash-Skriptdatei

Um das IFS im Bash-Skript zu verwenden, werden in der folgenden Anleitung verschiedene Beispiele implementiert.

Beispiel 1: Einfaches Bash-Skript ohne IFS ausführen

Lassen Sie uns die Bash-Skriptdatei ohne IFS ausführen, um das Konzept zu verstehen.

#!/bin/bash

String="Executing Bash Script File"

for word in $String
do
    echo "$word"
done
  • Eine lange Zeichenfolge wird durch Leerzeichen getrennt definiert.
  • Dann eine for-each-Schleife, um jedes Wort einzeln zu iterieren.
  • Dann speichert die „do“-Anweisung es im „$wort”-Variable und gibt sie auf dem Bildschirm aus:

Führen Sie nun die Bash-Skriptdatei mit dem Befehl „bash“ aus:

$ bash ./script.sh

Jedes Wort wurde iteriert und auf dem Bildschirm gedruckt, da die Standardfeldtrennzeichen Leerzeichen sind.

Beispiel 2: Bash-Skript mit „IFS“ ausführen

Jetzt führen wir die Bash-Skriptdatei mit IFS und einer Reihe von Autoren aus, deren Feldtrennzeichen das Komma ist.,”:

#!/bin/bash

Authors_String=Henry,Joseph,Johnsons,Milton
pre_ifs="$IFS"
IFS=","
for Author in $Authors_String
do
      echo $Author
done

Das Skript ist definiert als

  • Eine lange Zeichenfolge von Authurs wird durch Kommas getrennt definiert.
  • Speichern Sie dann das alte IFS im Ordner „pre_ifs”-Variable, sodass sie nach Abschluss der Aufgabe neu zugewiesen wird.
  • Definieren des Werts von IFS=““,“.
  • Dann eine for-each-Schleife, um jeden Autorennamen einzeln zu iterieren.
  • Dann speichert die „do“-Anweisung es im „$Autor” Variable und Drucken auf dem Bildschirm.

Speichern und kompilieren Sie die Bash-Skriptdatei für die Ergebnisse mit dem folgenden Befehl:

$ bash ./script.sh

Jedes Feld der Zeichenfolge wurde getrennt.

Beispiel 3: Ausführen eines Bash-Skripts mit IFS aus Benutzereingaben

Um die Zeichenfolge aus der Benutzereingabe zu übernehmen, führen Sie das folgende Skript in der Datei aus:

#!/bin/bash
read -p "Enter the string with space: " String
IFS=' '
read -ra ADDR <<<"$String"
for i in "${ADDR[@]}";
do
echo "$i"
done

Das Skript ist definiert als

  • lesen „Eigenschaft, die die Benutzereingabe speichert in“Zeichenfolge”Variable durch Drucken der Nachricht.
  • Definieren der IFS =“ ” mit Platz
  • read -ra ADDR” um den String als Array zu lesen. Hier das „RDas Flag „\n“ teilt dem System mit, dass „\n“ kein Escape-Zeichen ist. Während „ADas Flag „gibt an, dass die getrennten Wörter dem Array mit angegebenen Indizes zugewiesen werden.
  • Dann eine for-each-Schleife, um jedes Wort einzeln zu iterieren.
  • Dann speichert die „do“-Anweisung es im „$i” Variable und Drucken auf dem Bildschirm:

Kompilieren Sie das obige Skript und führen Sie es mit dem unten genannten Befehl aus:

$ bash ./script.sh

Die Benutzerzeichenfolge wurde iteriert.

Beispiel 4: Ausführen eines Bash-Skripts mit IFS über Positionsparameter

„$@“ und „$*“ enthalten die Liste der übergebenen Argumente, die als Positionsparameter bezeichnet werden. Lassen Sie uns sie im folgenden Skript verwenden:

#!/bin/bash

IFS='|'

echo " Parameter Through \$@ are : $@"
echo " Parameters Through \$* are : $*"

Das Skript ist definiert als

  • Legen Sie den Wert fest IFS=“|“ (ODER-Operator).
  • Echo”-Anweisungen, die eine Liste von Argumenten in „drucken“$@“ Und „$*“.

Speichern und kompilieren Sie die Datei, indem Sie die Argumente übergeben:

$ bash ./script.sh argument1 argument2 argument3

Die Argumente werden gedruckt.

Die Ausgabe wird wie folgt beschrieben:

  • $@” erweitert als „$1“, „$2“, „$3“….$n.
  • $*” erweitert als „$1y“, „$2y“, „$3y“…..$n hier ist y das Feldtrennzeichen, da IFS als Feldtrennzeichen oder Token-Trennzeichen fungiert

Beispiel 5: Skript mit IFS= ausführen”-” Über die Befehlszeile

Der Benutzer kann die Skriptparameter auch über die Befehlszeile zur Verwendung des IFS verwenden. Im angegebenen Befehl wird das IFS mit einem Bindestrich (-) und einer Zeichenfolge in der Echo-Anweisung in Kombination mit dem Pipe-Befehl angegeben. Der nächste Teil besteht darin, das Wort in den Variablen mit einem Feldtrennzeichen von „ zu trennen.” und es auf dem Bildschirm ausdrucken:

$ IFS="-"
echo "Welcome-to-itslinuxfoss!" | (read var1 var2 var3; echo $var1; echo $var2; echo $var3)

Jedes Wort „Willkommen“, „Zu„, Und „itslinuxfoss!„wird abgetrennt und auf dem Bildschirm ausgedruckt.

Abschluss

In der Bash-Skriptdatei von Linux ist das IFS das Feldtrennzeichen oder Token-Trennzeichen, das bei der Zeichenfolgenaufteilung verwendet wird. Es wird für spezielle Escape-Merkmale wie Kommas „“, Leerzeichen „“, Doppelpunkt „:“ usw. verwendet. Dieser Artikel hat die Bedeutung von IFS und im Bash-Skript anhand verschiedener Beispiele erläutert.

Schreibe einen Kommentar