For Schleife-Problemchen

Diskutiere For Schleife-Problemchen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Moin, mein Problemchen ist wahrscheinlich gar keins, aber dennoch habe ich einen Knoten im Hirn und komme nicht auf die Lösung. Also...

  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. 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
     
  3. #3 Robby-TX5, 16.01.2009
    Robby-TX5

    Robby-TX5 Grünschnabel

    Dabei seit:
    16.01.2009
    Beiträge:
    4
    Zustimmungen:
    0
    Suppi! Danke
     
  4. #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.
     
  5. #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