sh nach csh übersetzen.

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von antek72, 12.03.2007.

  1. #1 antek72, 12.03.2007
    antek72

    antek72 Grünschnabel

    Dabei seit:
    12.03.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo,
    bitte um Übersetzung der Variablenzuweisung von sh in csh.
    Hier in sh:

    Farbe=`echo $Color cut .....' >>>hier wird die Variable Farbe mit
    z.B.
    ABC gefüllt.

    ABC=123
    CDE=456
    ...
    x[123]=blau
    x[456]=rot
    ...

    echo "Farbe:" ${x[$Farbe]}

    Ergebnis sollte sein:
    Wenn $Color ABC ist, dann sollte Farbe den Wert blau zugewiesen
    bekommen.

    Das o.g. Skript funktioniert prima in sh.

    Wie muss es in csh aussehen?

    Herzlichen Dank im voraus.
    Toni
     
  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. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Hallo

    bash:
    Code:
    #!/bin/bash
    ABC=1
    CDE=2
    Farbe=$ABC
    x[1]=rot
    x[2]=blau
    echo "Farbe:" ${x[$Farbe]}
    
    csh:
    Code:
    #!/bin/csh
    set ABC = 1
    set CDE = 2
    set FARBE = $ABC
    set x = (rot blau)
    echo "Farbe:" $x[$FARBE]
    
    Arrays unter 'csh' sind so eine Sache... Aber ich denke das hättest du mit 'google' innerhalb kurzer Zeit selber herausgefunden...

    Gruss
    d22

    P.S: Wenns nicht unbedingt sein muss würde ich keine csh-Scripts schreiben.
     
  4. #3 antek72, 12.03.2007
    antek72

    antek72 Grünschnabel

    Dabei seit:
    12.03.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo,
    herzlichen Dank für deine Antwort.
    Rot wird ausgewertet. Alles i.O.
    Aber wie sieht es nun mit blau aus, wenn CDE übergeben wird?

    Und dann hätt ich noch ganz viele Farben....
    Danke & Gruß
    Toni
     
  5. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Na probiers doch aus...
     
  6. #5 antek72, 12.03.2007
    antek72

    antek72 Grünschnabel

    Dabei seit:
    12.03.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Versteh ich nicht. ?????

    Die Farbe wird hier definiert und ist immer dynamisch:
    Farbe=`echo $Color cut .....' Ergebnis ist dann ABC oder DEF oder...

    Woher weiss dein Skript, daß jetzt DEF ausgewertet wird?
     
  7. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Also, ich versteh nicht ganz was du machen willst. Was willst du von uns wissen, was ist deine Aufgabe?
     
  8. #7 antek72, 12.03.2007
    antek72

    antek72 Grünschnabel

    Dabei seit:
    12.03.2007
    Beiträge:
    8
    Zustimmungen:
    0
    #!/bin/sh
    Farbe=

    ABC=123
    DEF=456
    GAH=789

    x[123]=blau
    x[456]=rot
    x[789]=gelb

    echo "Farbe lautet:" ${x[$Farbe]}

    -------------------------------------------------------------
    Dies ist ein lauffähiges Skript unter sh,
    wenn z.B. Farbe=ABC in der 2ten Zeile gesetzt wird.
    Die Ausgabe bei echo sollte dann lauten: blau.

    Wird Farbe=DEF eingesetzt, kommt rot bei echo.

    Wir Farbe=GAH eingesetzt kommt gelb bei echo.

    Und nun meine Frage:

    Wie muss das Skript in csh aussehen?

    Es soll nur die Variable Farbe in der 2ten Zeile geändert werden.
    Hintegrund: Die Variable Farbe wird bei jedem Skriptaufruf dynamisch eingetragen. Somit steht da entweder:
    Farbe=ABC oder Farbe=DEF oder Farbe=GAH
    Ergebnis im echo: Entweder blau oder rot oder gelb

    Merci
    Toni
     
  9. #8 Wolfgang, 12.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Warum schaust du nicht einfach in der Manpage zur csh nach?
    In diesem Fall dürfte der einfache Unterschied nur in der Verwendung von
    set varname=value gegenüber varname=value in der Bash liegen.
    Beim Arrayzugriff entspricht $VAR[INDEX] der Schellsyntax ${VAR[INDEX]}.


    Wo ist das Problem?

    Gruß Wolfgang
     
  10. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Schau, ich habe dir die ganze Aufgabe sozusagen vorgekaut. Alles was du brauchst steht hier drinn:
    Grüsse
    d22
     
  11. #10 antek72, 12.03.2007
    Zuletzt bearbeitet: 12.03.2007
    antek72

    antek72 Grünschnabel

    Dabei seit:
    12.03.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Ich bin kein Programmierer und kann das leider nicht transferieren.
    So geht's leider nicht:

    #!/bin/csh
    set Farbe=

    set ABC=123
    set DEF=456
    set GAH=789

    set x[123]=blau
    set x[456]=rot
    set x[789]=gelb

    echo "Farbe lautet:" $x[$Farbe]
     
  12. #11 Wolfgang, 12.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Das geht nicht, weil du Farbe nicht mit set gesetzt hast.

    Wenn du das nicht selber kannst, hast du nur zwei( eigentlich drei) Möglichkeiten.
    Entweder du lernst es, oder du lässt es von Jemanden erledigen, der das kann.

    Die dritte: Du lässt es ganz sein. ;)

    Gruß Wolfgang
     
  13. #12 antek72, 12.03.2007
    antek72

    antek72 Grünschnabel

    Dabei seit:
    12.03.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo,
    auch mit set vor Farbe geht es nicht.
    Ich werde es morgen nochmals angehen.
    Über Nacht leg ich mir die csh-manpages unters Kissen.
    Gruß
    Toni
     
  14. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Das Problem ist vorallem das Array. Du kannst mit der 'csh' nicht beliebig Arrays füllen. Wenn du wirklich 'x[789]' willst, muss dein Array auch 798 gross sein.
    Code:
    #!/bin/csh
    set ABC=1
    set DEF=2
    set GAH=3
    
    set Farbe=$DEF
    
    set x=(blau rot gelb)
    
    echo "Farbe lautet:" $x[$Farbe]
    
    Das klappt so, aber sag mal, was wird das eigentlich? Ist reine Neugierde, scheint mir sehr kompliziert zu sein...

    Warum willst du denn unbedingt 'csh'? 'csh' ist nun wirklich nicht optimal für solche Dinge.

    Gruss
    d22
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 antek72, 13.03.2007
    antek72

    antek72 Grünschnabel

    Dabei seit:
    12.03.2007
    Beiträge:
    8
    Zustimmungen:
    0
    MoinMoin,
    Ich werde nicht verstanden ?(

    Folgendes Skript ergibt das Ergebnis blau:

    #!/bin/sh
    Farbe=ABC
    ABC=1
    DEF=2
    GAH=3
    x[1]=blau
    x[2]=rot
    x[3]=gelb
    echo "${x[$Farbe]}"

    Folgendes Skript ergibt das Ergebnis rot:
    #!/bin/sh
    Farbe=DEF
    ABC=1
    DEF=2
    GAH=3
    x[1]=blau
    x[2]=rot
    x[3]=gelb
    echo "${x[$Farbe]}"

    und folgendes ergibt gelb:

    #!/bin/sh
    Farbe=GAH
    ABC=1
    DEF=2
    GAH=3
    x[1]=blau
    x[2]=rot
    x[3]=gelb
    echo "${x[$Farbe]}"


    Ich weiss nicht, wie ich es besser erklären soll.
    Ich ändere nur die drei Buchstaben in der zweiten Zeile und das Ergebnis ändert sich. Wo muss ich in deinem Vorschlag die drei Buchstaben ändern, damit echo die zugeordnete Farbe ausgibt?:think:

    In sh funktioniert es prima !
     
  17. #15 Wolfgang, 13.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Habe jetzt noch mal nach einer Manpage für csh geschaut, (csh ist bei mir nicht installiert).
    Die Lösung hat dizzgo schon geschrieben.
    Da wird offensichtlich eine Hashtable für die Bash simuliert, da es dort soetwas nicht gibt.

    Nach dem set ARRAYNAME=(element1 element2 element3) steht die Arraygröße fest. (Hier 3)
    Es gibt dort wie in c keine dynamischen Arrays.

    Gruß Wolfgang
     
Thema:

sh nach csh übersetzen.

Die Seite wird geladen...

sh nach csh übersetzen. - Ähnliche Themen

  1. Keine Benachrichtigungen im Vollbild Modus

    Keine Benachrichtigungen im Vollbild Modus: Arch Linux Plasma 5.8 Weiss einer ob das gehen sollte, bzw kann mal einer testen ob es bei ihm geht, gerne auch mit anderen kde/plasma versionen....
  2. SRV Records nicht erstellt nach dcpromo

    SRV Records nicht erstellt nach dcpromo: Hallo zusammen, leider sind beim Join meines 2. DC in eine Samba 4 Domäne die SRV-DNS Records nicht erstellt worden... Hatte jemand schonmal das...
  3. CentOS 7: Falsche Metric bei regelbasiertem Routing nach Server-Reboot

    CentOS 7: Falsche Metric bei regelbasiertem Routing nach Server-Reboot: Hallo zusammen Ich möchte unseren existierenden SFTP Server durch einen neuen Server mit CentOS 7 ersetzen. Da der Server einerseits direkt via...
  4. Nicht erkannte Zeichen nach Update

    Nicht erkannte Zeichen nach Update: Hi, nachdem ich mein Kali Linux geupdated habe, ist mir aufgefallen dass viele Zeichen auf verschiedenen Nutzeroberflächen nur fehlerhaft...
  5. Nach Update debian 8 ist der Zugriff auf samba4 nicht möglich

    Nach Update debian 8 ist der Zugriff auf samba4 nicht möglich: Gerade habe ich debian mit dem Befehl "apt-get ugrade" aktualisiert. Es gab zahlreiche neue Daten unteranderen samba files. Nach neuem Start kann...