Zählen in einem Shellscript

Dieses Thema im Forum "Mac OS X - Unix & Terminal" wurde erstellt von edi38, 24.02.2004.

  1. edi38

    edi38 Thread Starter MacUser Mitglied

    Beiträge:
    94
    Zustimmungen:
    0
    MacUser seit:
    01.02.2004
    Hallo zusammen,

    wie kann ich einem Shellscript eine Variable um 1 erhöhen? Also so wie $i++.
     
  2. edi38

    edi38 Thread Starter MacUser Mitglied

    Beiträge:
    94
    Zustimmungen:
    0
    MacUser seit:
    01.02.2004
    Hab in einem alten Unix-Handbuch folgende Möglichkeit gefunden:

    #!/bin/sh

    i='1'
    for file
    do
    echo $i $file
    i='expr $i + 1'
    done

    Leider kann MacOSX 10.3.2 den Ausdruck 'expr' nicht.

    Hat jemand einen Vorschlag?
     
  3. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    hallo zusammen,

    natürlich kann OS X den Ausdruck "expr"
    warum soll der Panther das nicht können ?
     
  4. edi38

    edi38 Thread Starter MacUser Mitglied

    Beiträge:
    94
    Zustimmungen:
    0
    MacUser seit:
    01.02.2004
    Hallo maceis,

    wenn ich das Script wie gepostet startet, dann bekomme ich folgende Ausgabe:

    expr $i + 1 Documents
    expr $i + 1 Library
    expr $i + 1 Movies
    expr $i + 1 Music
    expr $i + 1 Pictures
    ...

    Was mache ich falsch?
     
  5. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    hallo nochmal

    hier ist eine mögliche Lösung (tcsh, andere müssten auch gehen):
    saturn:~] maceis% set i=1
    [saturn:~] maceis% echo $i
    1
    [saturn:~] maceis% set i=`expr $i + 1`
    [saturn:~] maceis% echo $i
    2
    [saturn:~] maceis%
     
  6. edi38

    edi38 Thread Starter MacUser Mitglied

    Beiträge:
    94
    Zustimmungen:
    0
    MacUser seit:
    01.02.2004
    Irgendwas klappt nicht. Habe jetzt den Code wie folgt

    #!/bin/sh

    set i=1
    for file
    do
    echo $i $file
    set i='expr $i + 1'
    done

    Ich starte mit: ./test.sh *

    Ergebnis:
    i=1

    Das ist alles.
     
  7. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    hallo edi,
    das problem liegt wohl in der Anwendung der for Schleife

    hast du meine Schnipsel mal probiert ?

    Was willst du eigentlich genau erreichen ?
     
  8. edi38

    edi38 Thread Starter MacUser Mitglied

    Beiträge:
    94
    Zustimmungen:
    0
    MacUser seit:
    01.02.2004
    Das Ziel ist folgendes:

    Ich bekomme von einem Kunden Bilder geschickt, die fuer eine Shop-System in ein bestimmtes Verzeichnis kopiert werden und dann mit einer DB verlinkt werden. Die Dateinamen sind irgendwelche 12-stelligen Zahlenkombinationen (wahrscheinlich von einer Digitalkamera). Ich moechte nun die Bilder fortlaufend umbenennen. Also 0001.gif, 0002.gif, etc.. Wenn nun neue Bilder vom Kunden kommen, sehe ich im Verzeichnis sofort, welche Files neu sind. Auch sind die Datenbankeintraege dann nachvollziehbarer und ich muss nicht jedesmal diese lange Zahl notieren.

    Am Besten waere folgendes für den Dateinamen:

    $i_konstanter_text.gif

    wobei $i aufsteigend verlaeuft.

    Vielen Dank fuer Deine Hilfe soweit.
     
  9. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    probier mal das aus:

    #!/bin/sh
    # Skript macuser
    # addiere 1 zu der Variablen i

    echo "Geben Sie die Variable i ein (Ganzzahl)"
    read i
    echo $i
    i=`expr $i + 1`
    echo $i



    Testlauf:
    [saturn:~/bin] maceis% ./macuser
    Geben Sie die Variable i ein (Ganzzahl)
    15
    15
    16

    [saturn:~/bin] maceis%

    Eingaben sind blau, Programmausgaben rot
     
  10. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    okay, wieviel Zeit hast du ?
     
Die Seite wird geladen...