Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Bash Variable: Wann welche Klammer?

  1. #1
    gombi
    Gast

    Bash Variable: Wann welche Klammer?

    Hallo!

    Bin neu im Forum und wünsche Allen einen schönen Tag!

    Da ich erst seit kurzem begonnen habe kleine Skripe in der bash zu bastel,
    stellen sich mir einige Fragen.

    Bitte nicht gleich steinigen falls ich was dummes frage!

    Ich versteh die Anwendung verschieder Klammern(oder ") bei der Variablenvergabe nicht ganz.

    zB:

    Warum klappt dies mit eckiger Klammer?

    Code:
    Read=$[`grep AccountingBytesReadInInterval <$StateFile | cut -d " " -f2`]

    Das aber nicht. Und ich muss die runde Klammer verwenden. Auch mit der Verwendung von backticks habe ich es nicht geschafft [ zu verwenden.

    Code:
    MonthlyTorTraffic=$(grep $Month <$TorTrafficDB | grep $Year | cut -d " " -f1 | awk '{sum+=$1}END{print sum}')

    Und wann kann ich " verwenden?

    Danke und
    Lg
    Gombi

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.09.2005
    Beiträge
    61
    Hallo und WILLKOMMEN,

    da sich niemand an eine Antwort wagt, versuche ich das mal.

    Hast du das Ergebnis deines ersten Beispiels mal überprüft?
    Für mich ist es eher fraglich, ob dies korrekt funktioniert, zumindest komme ich zu folgendem Ergebnis:

    Code:
    xy=$[`echo "HALLO"`]
    echo $xy
    0
    
    xx=$(echo "Hallo")
    echo $xx
    Hallo
    Für Befehlsersetzungen immer $() verwenden, [ ] nutze ich meist nur für test-Abfragen. Wenn dich Details interessieren, findest du im Netz unzählige Beispiele.
    Im ersten Beispiel benutzt du die [ ] und innerhalb dieser die Ersetzungszeichen.
    Wenn Du das $ und die [ ] entfernst, wird alles richtig funktionieren.

    Code:
    xy=`echo "HALLO"`
    echo $xy
    HALLO
    Deine Variable "Read" ... denk dran, reservierte Wörter zu vermeiden.

    Viele Grüße
    zst

  3. #3
    gombi
    Gast
    Danke für deine Antwort!


    Ich verwende dieses Beispiel erfolgreich in einem Skript:
    Code:
    Read=$[`grep AccountingBytesReadInInterval <$StateFile | cut -d " " -f2`]
    War verwundert über die unterschiedliche schreibweise, aber es funkt definitiv.
    Und es funkt auch:

    Code:
    Read=`grep AccountingBytesReadInInterval <$StateFile | cut -d " " -f2`
    oder
    Code:
    Read=$(grep AccountingBytesReadInInterval <$StateFile | cut -d " " -f2)
    Aber das:
    Code:
    xy=$[`echo "HALLO"`]
    geht nicht. Aber warum?

    Danke nochmal,

    LG
    Gombi

  4. #4
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Bei $(Befehl) wird der Befehl ausgeführt und dessen Ausgabe an der Stelle eingesetzt. Zum Beispiel kann man so ein Verzeichnis mit dem aktuellen Datum erstellen: mkdir "$(date)"
    Die Anführungszeichen sorgen dafür, dass Strings, die Whitespace (Leerzeichen usw.) enthalten, zusammengehalten werden.
    Mit $((Ausdruck)) kann man rechnen: echo $((1+1))

    `` ist eine alte Schreibweise für $()
    $[] ist eine alte Schreibweise für $(())

Lesezeichen

Berechtigungen

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