For Schleife-Problemchen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Robby-TX5, 16.01.2009.

  1. #1 Robby-TX5, 16.01.2009
    Robby-TX5

    Robby-TX5 Grünschnabel

    Dabei seit:
    16.01.2009
    Beiträge:
    4
    Zustimmungen:
    0
    Moin,

    mein Problemchen ist wahrscheinlich gar keins, aber dennoch habe ich einen Knoten im Hirn und komme nicht auf die Lösung.

    Also einfache for schleife

    Code:
    for i in {1 .. 4 }; do echo $i; done
    1
    2
    3
    4
    
    jetzt soll der zweite Wert durch eine Variable "a" ersetzt werden. Ich habe folgendes probiert, nur das funktioniert nicht (habe da schon diverse Variantionen durchprobiert).

    Code:
    for i in {1 .. $(echo $a)}; do echo $i; done
    {1..4}
    
    Danke für die Hilfe.

    Robby
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. L0s3r

    L0s3r Tripel-As

    Dabei seit:
    22.09.2007
    Beiträge:
    216
    Zustimmungen:
    0
    Ort:
    MV
    Für die Bash funktioniert diese Variante:
    Code:
    for ((i=1; i<=a; i++)); do echo $i; done
     
  4. #3 Robby-TX5, 16.01.2009
    Robby-TX5

    Robby-TX5 Grünschnabel

    Dabei seit:
    16.01.2009
    Beiträge:
    4
    Zustimmungen:
    0
    Suppi! Danke
     
  5. #4 rikola, 16.01.2009
    Zuletzt bearbeitet: 16.01.2009
    rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Die ".." sind keine bash-syntax. Die richtige Syntax waere (ausser der von L0s3r angegebenen)
    Code:
    for i in 1 2 3 4; do ...
    
    Fuer laengere Sequenzen kannst Du auch 'seq' benutzen:
    Code:
    for i in $(seq 4); do ...
    
    [edit]
    Merke gerade (an einem anderen Post von L0s3r), dass es '..' in bash doch gibt. Immerhin funktioniert es mit 'seq' auch mit einer Variablen.
     
  6. #5 Robby-TX5, 16.01.2009
    Robby-TX5

    Robby-TX5 Grünschnabel

    Dabei seit:
    16.01.2009
    Beiträge:
    4
    Zustimmungen:
    0
    Danke für den Tipp. Aber auch seq scheint nicht immer zu funktionieren. Ich sitze hier gerade an einem Mac und der kann weder "for i in {1..4}; do ..." noch "for in in $(seq 4); do ..."

    Code:
    bash-3.2# for i in $(seq 4); do echo $i; done
    bash: seq: command not found
    
    bash-3.2# for i in ${1..4}; do echo $i; done
    bash: ${1..4}: bad substitution
    
    Aber grundsätzlich finde ich die Schleife mit seq sehr gut. Ich werde da mal am Montag mit "rumspielen" .....

    Robby
     
Thema:

For Schleife-Problemchen