Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
24.07.2021, 23:17:13

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 25776
  • Letzte: joba48
Statistiken
  • Beiträge insgesamt: 746689
  • Themen insgesamt: 60054
  • Heute online: 375
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  Fragen zur Verwendung von Arrays  (Gelesen 374 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Fragen zur Verwendung von Arrays
« am: 07.02.2021, 08:19:38 »
Testweise definiere ich mir folgendes Array und gebe es dann aus:
# Erzeugung von Array
my_array=( 0 1 2 3 4 5 6 7 8 9 )

# Zeilenweise Ausgabe des Arrayinhaltes, mit einem Element pro Zeile
        for (( i=0; i<${#my_array[@]}; i++ ))
          do
            echo "$i: ${my_array[$i]}"
          done

Ausgabe:
0: 1
1: 2
2: 3
3: 4
4: 5
5: 6
6: 7
7: 8
8: 9
9: 8

Bei der Ausgabe des folgenden Arrays, wo ich die Stelle 8 und 9 leer gelassen habe, werden mir diebeiden Stellen bei der Ausgabe unterschlagen.:
# Erzeugung von Array
my_array=( 0 1 2 3 4 5 6 7     )

# Zeilenweise Ausgabe des Arrayinhaltes, mit einem Element pro Zeile
        for (( i=0; i<${#my_array[@]}; i++ ))
          do
            echo "$i: ${my_array[$i]}"
          done

Ausgabe (Stelle 8 und 9 fehlen):
0: 1
1: 2
2: 3
3: 4
4: 5
5: 6
6: 7
7: 8



Bei der durch Probieren heraus gefundenen Schreibweise des folgenden Arrays, wo ich die Stelle 8 und 9 leer gelassen aber maskiert habe, werden mir die beiden Stellen als leer ausgegeben.:
# Erzeugung von Array
my_array=( 0 1 2 3 4 5 6 7 "" "" )

# Zeilenweise Ausgabe des Arrayinhaltes, mit einem Element pro Zeile
        for (( i=0; i<${#my_array[@]}; i++ ))
          do
            echo "$i: ${my_array[$i]}"
          done

Ausgabe (die leeren Stellen 8 und 9 werden mit ausgegeben):
0: 1
1: 2
2: 3
3: 4
4: 5
5: 6
6: 7
7: 8
8:
9:

Frage:
* Wie definiert und verwendet man korrekt leere Stellen in einem Array? Ich habe dazu keine Regeln gefunden.
* Wie lauten die entsprechenden Regeln ?
* Wie lautet ein passender Suchbegriff ?
* Verwendet man in einem Array vlt. immer einen bestimmten Trenner zwischen den Zellen oder schreibt man vlt. im Normalfall alle Werte im Array immer gekapselt in zwischen zwei Anführungsstrichen ?

Hmm, daraus ergibt sich die praktische Frage, wie man (in dem Fall jetzt einmal bei einer Variable), aus einer nicht durch Gänsefüßchen maskierten Variable, eine mit Gänsefüßchen maskierte macht, bevor man diese bei einer Verwendung in einem Array, an ein Array übergibt.

Also in etwa so etwas:
# vorher
var=123

# Umwandlung, die jedoch so nicht funktioniert.
var="""$var"""

# nachher
var="123"
« Letzte Änderung: 07.02.2021, 11:55:44 von Jan.Tenner »

Re: Fragen zur Verwendung von Arrays
« Antwort #1 am: 07.02.2021, 10:54:36 »
Du hast die Maskierung in dem Array (Beispiel oben) nicht mit angegeben.
Ich vermute mal das
my_array=( 0 1 2 3 4 5 6 7 \  \  )Ich vermute, dass (echt) leere Stellen im Array nicht implementiert werden können. Hier oben sind eben Leerzeichen und keine (echte) leeren Stellen in den Array implementiert.

Meinst Du mit dem zweiten Beispiel das?
var=123
var=\"$var\"
# nachher
echo $var
« Letzte Änderung: 07.02.2021, 11:59:07 von PeLi »

Re: Fragen zur Verwendung von Arrays
« Antwort #2 am: 07.02.2021, 12:01:01 »
Ich denke, dass (echt) leere Stellen im Array nicht implementiert werden können. Hier oben sind eben Leerzeichen und keine (echte) leeren

Ich hatte in meinem Eingangspost oben einen Fehler den ich soeben korrigiert habe. In der folgenden Art und Weise der Maskierung, kann man auch leere Stellen im Array an beliebiger Stelle verwenden. Die Maskierung von nicht leeren Zeichen wiederum ist zwar möglich, aber augenscheinlich nicht notwendig.

# Erzeugung von Array
my_array=( 0 1 "" "3" 4 5 6 "7" "" "" )

# Zeilenweise Ausgabe des Arrayinhaltes, mit einem Element pro Zeile
        for (( i=0; i<${#my_array[@]}; i++ ))
          do
            echo "$i: ${my_array[$i]}"
          done

Ausgabe (die leeren Stellen 8 und 9 werden mit ausgegeben):
0: 0
1: 1
2:
3: 3
4: 4
5: 5
6: 6
7: 7
8:
9:

Re: Fragen zur Verwendung von Arrays
« Antwort #3 am: 07.02.2021, 12:10:33 »

Ich hatte in meinem Eingangspost oben einen Fehler den ich soeben korrigiert habe. In der folgenden Art und Weise der Maskierung, kann man auch leere Stellen im Array an beliebiger Stelle verwenden. Die Maskierung von nicht leeren Zeichen wiederum ist zwar möglich, aber augenscheinlich nicht notwendig.

# Erzeugung von Array
my_array=( 0 1 "" "3" 4 5 6 "7" "" "" )

Alles klar. In den Array sollen Leerzeichen.

Re: Fragen zur Verwendung von Arrays
« Antwort #4 am: 07.02.2021, 12:13:57 »
Hinzufügen von Werten zum Array per Script:
Ein per Hand zum Array hinzufügbares leeres Zeichen, welches mit "" maskiert ist, gelingt es mir nicht zum Array hinzu zu fügen.

# Erzeugung von Array
my_array=( 0 1 "" "3" 4 5 6 "7" "" "" )
echo
echo

# Zeilenweise Ausgabe des Arrayinhaltes, mit einem Element pro Zeile
        for (( i=0; i<${#my_array[@]}; i++ ))
          do
            echo "$i: ${my_array[$i]}"
          done
echo
echo

# Hinzufügen eines Wertes zum Array
eingabewert1="123"
my_array=( "${my_array[@]}" "$eingabewert1" ) # Wert dem Array als nächste Stelle hinten an fügen

# Zeilenweise Ausgabe des Arrayinhaltes, mit einem Element pro Zeile
        for (( i=0; i<${#my_array[@]}; i++ ))
          do
            echo "$i: ${my_array[$i]}"
          done


Nachtrag:
Die Lösung ist zu obigen Script die folgende Schreibweise wenn man einen leeren Wert hinzu fügen will:
# Hinzufügen eines Wertes zum Array
eingabewert1=( "" )
« Letzte Änderung: 07.02.2021, 15:48:57 von Jan.Tenner »

Re: Fragen zur Verwendung von Arrays
« Antwort #5 am: 07.02.2021, 14:26:27 »
Off-Topic:
Wenn ich mir das Array anschaue: Integers, Strings, ... alles durcheinander
Mit sowas kannste nicht ernsthaft arbeiten wollen ...

Re: Fragen zur Verwendung von Arrays
« Antwort #6 am: 07.02.2021, 19:58:14 »
Off-Topic:
Wenn ich mir das Array anschaue: Integers, Strings, ... alles durcheinander
Mit sowas kannste nicht ernsthaft arbeiten wollen ...

Off-Topic:
Doch!