Ausgabe von Array-Elementen Zeilenweise
In diesem Schritt werden wir uns auf das Hauptthema unseres Labs konzentrieren: die zeilenweise Ausgabe von Array-Elementen. Wir werden verschiedene Methoden untersuchen, wie man dies in Bash erreichen kann.
Methode 1: Verwendung einer For-Schleife
Der einfachste Weg, um Array-Elemente zeilenweise auszugeben, ist die Verwendung einer For-Schleife:
- Erstellen Sie eine neue Datei namens
print_array_loop.sh
:
#!/bin/bash
## Create a sample array
planets=("Mercury" "Venus" "Earth" "Mars" "Jupiter" "Saturn" "Uranus" "Neptune")
echo "Printing planets using a for loop:"
for planet in "${planets[@]}"; do
echo "$planet"
done
- Speichern Sie die Datei und machen Sie sie ausführbar:
chmod +x /home/labex/project/print_array_loop.sh
- Führen Sie das Skript aus:
./print_array_loop.sh
Die Ausgabe zeigt jeden Planeten in einer separaten Zeile:
Printing planets using a for loop:
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Methode 2: Verwendung des printf-Befehls
Der printf
-Befehl ist oft effizienter als die Verwendung einer Schleife mit echo
:
- Erstellen Sie eine neue Datei namens
print_array_printf.sh
:
#!/bin/bash
## Create a sample array
planets=("Mercury" "Venus" "Earth" "Mars" "Jupiter" "Saturn" "Uranus" "Neptune")
echo "Printing planets using printf:"
printf "%s\n" "${planets[@]}"
- Speichern Sie die Datei und machen Sie sie ausführbar:
chmod +x /home/labex/project/print_array_printf.sh
- Führen Sie das Skript aus:
./print_array_printf.sh
Die Ausgabe ist dieselbe wie bei der vorherigen Methode:
Printing planets using printf:
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Methode 3: Verwendung der IFS-Variablen
Die interne Feldtrennzeichen-Variable (Internal Field Separator, IFS) kann verwendet werden, um zu steuern, wie Array-Elemente ausgegeben werden:
- Erstellen Sie eine neue Datei namens
print_array_ifs.sh
:
#!/bin/bash
## Create a sample array
planets=("Mercury" "Venus" "Earth" "Mars" "Jupiter" "Saturn" "Uranus" "Neptune")
echo "Printing planets using IFS:"
## Temporarily change IFS to newline
old_IFS="$IFS"
IFS=$'\n'
echo "${planets[*]}" ## Note: using * instead of @ with IFS
IFS="$old_IFS" ## Restore original IFS
- Speichern Sie die Datei und machen Sie sie ausführbar:
chmod +x /home/labex/project/print_array_ifs.sh
- Führen Sie das Skript aus:
./print_array_ifs.sh
Die Ausgabe zeigt erneut jeden Planeten in einer separaten Zeile:
Printing planets using IFS:
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Methode 4: Kombination mehrerer Techniken
Kombinieren wir diese Techniken in einem umfassenderen Beispiel:
- Erstellen Sie eine neue Datei namens
print_array_combined.sh
:
#!/bin/bash
## Create a sample array
planets=("Mercury" "Venus" "Earth" "Mars" "Jupiter" "Saturn" "Uranus" "Neptune")
echo "Using a for loop with index:"
for i in "${!planets[@]}"; do
echo "Planet $i: ${planets[$i]}"
done
echo -e "\nUsing printf with formatting:"
printf "Planet: %s - %d letters\n" "${planets[@]}" "${#planets[@]}"
echo -e "\nSorted planets:"
printf "%s\n" "${planets[@]}" | sort
- Speichern Sie die Datei und machen Sie sie ausführbar:
chmod +x /home/labex/project/print_array_combined.sh
- Führen Sie das Skript aus:
./print_array_combined.sh
Die Ausgabe zeigt verschiedene Möglichkeiten, wie man Array-Elemente formatieren und ausgeben kann:
Using a for loop with index:
Planet 0: Mercury
Planet 1: Venus
Planet 2: Earth
Planet 3: Mars
Planet 4: Jupiter
Planet 5: Saturn
Planet 6: Uranus
Planet 7: Neptune
Using printf with formatting:
Planet: Mercury - 8 letters
Planet: Venus - 5 letters
Planet: Earth - 5 letters
Planet: Mars - 4 letters
Planet: Jupiter - 7 letters
Planet: Saturn - 6 letters
Planet: Uranus - 7 letters
Planet: Neptune - 7 letters
Sorted planets:
Earth
Jupiter
Mars
Mercury
Neptune
Saturn
Uranus
Venus
Jede dieser Methoden hat ihre Vorteile:
- Die For-Schleife ist für Anfänger am leichtesten zu verstehen.
- Die
printf
-Methode ist für große Arrays effizienter.
- Die IFS-Methode ist kompakt, aber möglicherweise weniger intuitiv.
- Die kombinierte Technik bietet reichhaltige Formatierungsmöglichkeiten.
Wählen Sie die Methode, die am besten zu Ihrem spezifischen Anwendungsfall und Ihrem Codierungsstil passt.