:: too many arguments

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von tzzaetaynzz, 30.03.2009.

  1. #1 tzzaetaynzz, 30.03.2009
    tzzaetaynzz

    tzzaetaynzz Tripel-As

    Dabei seit:
    31.01.2004
    Beiträge:
    153
    Zustimmungen:
    0
    Hallo zusammen,

    beim ausführen eines Skriptes erhalte ich folgenden Fehler:/pfad/skriptname: line 19: [: too many arguments

    Hier das Skript:

    19 if [ $MESSAGE == "Build Failed" ]
    20 then
    21 cat /tmp/$1.log | /bin/mailx -s "$MESSAGE" logintest
    22 fi


    Wenn ich der Zeile 19 die if-Abfrage ändere funktioniert das Skript fehlerfrei.

    Hier das abgeänderte Skript:

    19 if [[ $MESSAGE == "Build Failed" ]]
    20 then
    21 cat /tmp/$1.log | /bin/mailx -s "$MESSAGE" logintest
    22 fi


    Warum ist das so, warum ist [[]] besser als []?
     
  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. #2 sim4000, 30.03.2009
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    So:
    Code:
    #!/bin/bash
    if[ "$MUH" == "MAEH" ]; then
       echo "lala";
    else
       echo "lulu";
    fi
    Du vergleichst ja eine Variable mit einem String. Also muss die Variable auch in ".
     
  4. Tblue

    Tblue Tripel-As

    Dabei seit:
    27.11.2007
    Beiträge:
    188
    Zustimmungen:
    0
    test(1) verwendet nur ein Gleichheitszeichen zum Vergleichen von Strings und nicht zwei. Also:
    Code:
    if [ "$var" = "abc" ]; then
        echo "equal"
    fi
    Die Anführungszeichen sind hier nicht unbedingt nötig, man sollte Variablen aber immer quoten (Leerzeichen).
     
  5. #4 tzzaetaynzz, 30.03.2009
    tzzaetaynzz

    tzzaetaynzz Tripel-As

    Dabei seit:
    31.01.2004
    Beiträge:
    153
    Zustimmungen:
    0
    Danke für Eure antworten.

    Ich sehe, das vergleichen von (String)Variablen soll mit quotes erfolgen
    und mit einem Gleichheitszeichen (nicht wie bei mir mit zwei).

    Aber was hat das mit [[]] und [] zu schaffen?
     
  6. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Code:
     [ ] 
    ist ne Art Kurzform für
    Code:
    test
    , was zwei Werte miteinander vergleicht. Mit
    Code:
     [[ ]] 
    wendest du test ja quasi auf sich selbst an.... Also ist
    Code:
    [[ ]]
    nicht besser sondern wertet nur das Ergebnis des ersten [] aus ;)

    Mit 2 Gleichheitszeichen funktioniert's aber auch....
     
  7. Tblue

    Tblue Tripel-As

    Dabei seit:
    27.11.2007
    Beiträge:
    188
    Zustimmungen:
    0
  8. #7 bytepool, 30.03.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    Nein. So wie du das meinst, muesstest du noch ein Leerzeichen zwischen die Klammern packen, was in den meisten Faellen aber auch zu Syntax Fehlern fuehren duerfte.
    Ja und Nein, je nachdem ob '[' oder '[[' verwendet wird. Zur naeheren Erlaeuterung siehe den Link von Tblue oder auch 'man bash'. ;)

    mfg,
    bytepool
     
  9. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Ja, ich hab mich schon in die Ecke gestellt, nachdem ich's nachgelesen hatte ;)
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 tzzaetaynzz, 31.03.2009
    tzzaetaynzz

    tzzaetaynzz Tripel-As

    Dabei seit:
    31.01.2004
    Beiträge:
    153
    Zustimmungen:
    0
    Danke für Eure postings.

    Im "Bash Cook Book" lese ich, die [[]] sind mit der Bash 2.01 eingeführt worden. Der Syntax innerhalb der Klammern ist gleich, aber die Auswertund ist anders ... so ganz habe ich es nicht verstanden.
     
  12. #10 bytepool, 31.03.2009
    Zuletzt bearbeitet: 31.03.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    mach dir nix draus, sim's Code und Erklaerungen sind genauso schlimm, das seh' ich jetzt erst. ;)

    Aber ich schreibe diesen Post auch nicht um euch weiter zu bash'en, sondern um noch kurz hinzuzufuegen, dass man sich am besten auch noch gegen den Sonderfall von leeren Variablen absichern sollte. Entweder, indem man die benutzten Variablen vorher mit -z auf Nullstrings testet, oder mit dem kleinen Hack, dass man auf beiden Seiten des Stringvergleichs noch einen Buchstaben anhaengt:
    Code:
    if [ a"$var" = a"foo" ]; then [...]
    
    Tut man das nicht, fuehrt das zum Abbruch des Skripts wegen Syntax Fehlern, sollten die Variablen tatsaechlich mal leer sein.

    mfg,
    bytepool
     
Thema:

:: too many arguments

Die Seite wird geladen...

:: too many arguments - Ähnliche Themen

  1. ./test: line 2: [: too many arguments

    ./test: line 2: [: too many arguments: Kann mir jemand sagen warum er hier meckert? MESSAGE=$(tail -n1 *.log) if [ $MESSAGE = "Export terminated successfully without warnings." ];...
  2. Humble Bundle - Germany Edition vorgestellt

    Humble Bundle - Germany Edition vorgestellt: Das Humble-Bundle-Team hat ein weiteres Humble Indie Bundle geschnürt. Unter dem Titel »The Humble Weekly Bundle: German Edition« finden sich...
  3. Too many Connections...

    Too many Connections...: Hey. Ich hab curlftpfs kompiliert und installiert (PKG). Ich hab mir ein kleinen Script geschrieben, der ein screenshot macht und es hoch lädt >...
  4. Apache - too many open files.

    Apache - too many open files.: Hallo, ich hab grad mal ein kleines problemdas ich in dieser art noch nicht hatte, und grad selbst leider nicht auf die loessung komme, daher...
  5. The ATI Linux Howto & many more

    The ATI Linux Howto & many more: http://3dlinuxforen.de/ Hi, auf meiner HP sind jetzt 3 ATI Linux Howto´s Online. Eins ist für alle Distri´s geeignet, 1 ATI Linux Howto,...