Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Variable in Variableabfrage

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.11.2005
    Beiträge
    21

    Variable in Variableabfrage

    Hallo zusammen,

    ich möchte gerne mit einer Variable eine andere Variable erstellen.

    Beispiel:
    VARIABLE1="EINS"
    VARIABLE2="ZWEI"
    $VARIABLE1$VARIABLE2="NEU"

    echo $EINSZWEI

    Also in VARIABLE1 ist EINS gesetzt und VARIABLE2 ist ZWEI gesetzt. Dann soll er eine neue Variable EINSZWEI mit NEU setzen.

    Aber das klappt net

    Bonusfrage: Mit Strg+V und ESC kann ich im vi Escape-Sequenzen generieren. Weiß jemand zufällig wie ich den Bondrucker Epson TM-T88III dazu bringe, dass er schneidet ??? :-)
    Geändert von Mathew73 (16-12-2005 um 09:24 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    Code:
    eval  "$VARIABLE1$VARIABLE2=NEU"
    ps: den bonus kann ich mir leider nicht verdienen
    religion is a virus from outer space

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von Mathew73
    Weiß jemand zufällig wie ich den Bondrucker Epson TM-T88III dazu bringe, dass er schneidet ??? :-)
    Wahrscheinlich mit Form Feed (FF), ASCII Code 0C, also (Strg+V gefolgt von) Strg+L

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.11.2005
    Beiträge
    21
    Danke für Deine Antwort. Denke aber, ich habe das falsche Problem geschildert. Hier ein neues Beispiel was eher zutrifft.

    ZEILENPOSITION=1
    ANZAHL1=1
    ANZAHL2=3
    ANZAHL3=5

    while [ $ZEILENPOSITION -le 5 ]
    do
    echo $ANZAHL$ZEILENPOSITION
    ZEILENPOSITION=$[$ZEILENPOSITION+1]
    done

    Führe ich das aus, sehe ich die Zahlen 1 bis 5 weil die Variable $ANZAHL leer ist und die Variable $ZEILENPOSITION die Zahlen 1 bis 5 erhält.

    Der soll aber die Variable $ANZAHL1, $ANZAHL2, $ANZAHL3.... anzeigen wobei dann die 1, 2, 3... aus der $ZEILENPOSITION kommen.

    Hoffe habe das richtig erklärt. Habe das zwar ebenfalls mit eval probiert zu lösen, aber ich denke, dass ist für das obige der falsche Befehl im Gegensatz zu meiner ersten Erklärung, da passt der ja genau.

    Hoffe Du kannst mir noch mal helfen, da mir das eine Menge Programmcode ersparen würde.

  5. #5
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    so?
    Code:
    for ZEILENPOSITION in $(seq 3) ; do eval "echo \$ANZAHL$ZEILENPOSITION";  done
    religion is a virus from outer space

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Code:
    eval echo \$ANZAHL$ZEILENPOSITION
    Betreffs des Druckers: Die Hexfolge 1D 56 00 sollte das tun, was du willst. Google ist dein Freund

    http://www.epson.de/fileadmin/conten...ads/escpos.pdf

  7. #7
    Registrierter Benutzer
    Registriert seit
    22.11.2005
    Beiträge
    21
    also mit dem Bondrucker hat geklappt, einfach ein ^[i0 senden

    Das mit dem eval klappt auch soweit, aaaaaaaber ich bleibe noch an einer Sache hängen

    eval echo -n "\$ANZAHL$ZEILENPOSITION" >> /tmp/test.txt

    klappt wunderbar.

    Nur wie muss ich das Regeln, wenn ich eine if-Anweisung habe ???
    ...
    if [ "$ANZAHL1" = "" ]
    ...
    if [ "$ANZAHL2" = "" ]
    ...
    ich habe:
    if [ "eval \$ANZAHL$ZEILENPOSITION" = "" ]
    probiert, aber das klappt net

    Sie Smileys sind ja echt witzig hier

  8. #8
    Registrierter Benutzer
    Registriert seit
    22.11.2005
    Beiträge
    21
    Hallo zusammen,

    ich nutze jetzt Variablen nach dem Typ:

    ANZAHL[$ZEILENPOSITION]="huhu"

    und lasse die mit

    echo ${ANZAHL[$ZEILENPOSITION]}

    wunderbar anzeigen.

    Damit habe ich meine aktuellen Probleme erst mal gelöst. Leider muss ich natürlich alle Variablen auf den neuen Typ umstellen :-( Aber egal, dafür klappts später bessa :-)

    Also, vielen Dank an Euch.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •