Hase59 schrieb:
Anlegen eines Arrays, deren Index ein String ist. Was ist ein String?
Ein String ist eine Abfolge von Zeichen - aka Zeichenkette.
Meine mal was von Ganzen Zahlen gehört zu haben.
Das sind Integer.
declare -a eurotipp_1=(4 10 14 27 35)
Anlegen des Array fur die Eingabe der Zahlen, deren Index ebenfalls ein String ist. -a Deklariert ein indiziertes Feld ?
declare -a VARIABLE
legt den Typ der Variable auf ein normales Array fest, dessen Werte man über einen numerischen Index ansprechen kann. Wenn man ein assoziatives Array wollte (wo man über einen String als Key auf einen Wert zugreifen kann) wäre das declare -A VARIABLE
.
Schleifendurchlauf 5x für die Eingabe der Zahlen.
for i in {1..6}
6 x, das läuft über die Zahlen 1 - 6.
Einlesen der Zahlen mit read. Was macht -u.
-u $NUMMER
gibt den Filedescriptor an, von dem gelesen werden soll. 1 ist stdin, also das worüber die Shell ihre Eingaben vom Terminal-Emulator bekommt.
-p gibt Wahrscheinlich das Wort Zahl aus, welche dann in der Variable i gespeichert und an ziehung_1 übergeben wird.
-p "Prompt"
gibt einen Prompt aus, in dem man sagen kann, was man an Eingabe erwartet. Die Variable i wird nur von der for-Schleife verändert und dann genutzt um die erwartete Zahl anzuzeigen
bzw. den Index der Position in dem Array zum Speichern der Eingabe anzugeben.
Dann die Ausgabe mit echo. Und dann kommen zwei verschachtelte For - Schleifen zur ausgabe der Zahlen. Also
So wie ich das verstehe arbeitet die erste Schleife alle Werte der eingegebenen Zahlen ab.
for z in "${ziehung_1[@]}"
Korrekt.
An dieser Stelle läuft eine Scheife in der Schleife! Großes ??????
Ja, verschachtelte Schleifen sind nichts besonderes und solange die Anzahl der Schleifendurchläufe klein ist, machen die sich bei der Rechenzeit kaum negativ bemerkbar. Aber es ist schön, wenn man darauf verzichten kann, wie ich es in der Lösung von heute morgen gemacht habe (wobei grep da intern natürlich intern in Schleifen über die Zeilen laufen muss).
Und hier wieder große Fagezeichen.
paste -sd' '
Die Manpage zu paste verrät dazu:
ÜBERSICHT
paste [OPTION]… [DATEI]…
BESCHREIBUNG
Zeilen auf Standardausgabe ausgeben, die aus sequenziell sich entsprechenden Zeilen jeder
DATEI bestehen, getrennt durch Tabulatoren.
liest ohne DATEI oder wenn DATEI »-« ist, aus der Standardeingabe.
Die obligatorischen Argumente für Optionen sind für deren Kurz- und Langform gleich.
-d, --delimiters=LISTE
Zeichen aus LISTE statt Tabulatoren benutzen
-s, --serial
Eine Datei nach der anderen statt parallel ausgeben
[...]
Wenn paste ohne Datei als Argument aufgerufen wird, liest es von stdin. -s
sorgt dafür, dass es stdin zeilenweise am Stück verarbeitet wird, statt jeweils eine Zeile aller als Argumenten übergeben Dateien zusammenzufassen und das nach einem Zeilenumbruch für weitere Zeilen zu wiederholen. -d' '
sorgt dafür, dass die eingelesenen Zeilen durch ein Leerzeichen getrennt werden.
Die Syntax der Bash ist recht komplex - https://tldp.org/LDP/Bash-Beginners-Guide/html/index.html und https://tldp.org/LDP/abs/html/index.html sind da neben dem Handbuch eine recht gute Einführung.