Einfache if Abfrage überfordert mich, day of week

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe da ein Problem mit IF:
    Das Script:

    #!/bin/sh
    date '+%A' > qq.txt
    ww=$(cat qq.txt)
    rr="Samstag"
    echo $ww ( ist Samstag )
    echo $rr ( ist Samstag )
    echo ${#ww} # gleiche Länge prüfen!
    echo ${#rr} ( 2 x sieben )

    if ["$ww" == "$rr"] ## das ist so aus dem LINUX Handbuch!

    then
    echo "Gefunden"
    else
    echo "Mist"
    fi
    Und das Ergebnis:


    papa@raspuntu:~/Desktop$ ./qq.sh
    Samstag
    Samstag
    7
    7
    ./qq.sh: 9: ./qq.sh: [Samstag: not found
    Mist
    papa@raspuntu:~/Desktop$


    Ein frustierter Villamarinella der in seinem Leben min. 1 Mio if Schleifen programmiert hat, aber easy

    If heute = "Wetter"
    dann regnet es oder nicht

    Ich vergleiche doch 2 gleiche Variablentypen miteinander, also wo ist das Problem.
    Naja,

    Ein anderes Problem am Rande:

    Ich benutze UbuntuMate und da geht offensichtlich das raspi-config nicht und somit komme ich mit Putty nicht auf das Ding. raspi-config deswegen weil ich UbuntuMate nicht mit putty erreichen kann.
    XRDP habe ich installiert, das funktioniert zwar, aber ohne das WICHTIGE copy und paste.

    Obwohl, UbuntuMate ist das beste auf raspi was man haben kann.

    VM

  • Einfache if Abfrage überfordert mich, day of week? Schau mal ob du hier fündig wirst!

  • Hallo,
    in deiner if-Bedingung versuch es mal mit nur einem Gleichheitszeichen. Und zu deinem Putty und raspi-config Problem. Du willst den SSH-Server starten? Hab diese Anleitung gefunden, für ältere und andere Distributionen.

    Code
    sudo apt-get install ssh
    sudo /etc/init.d/ssh start
    sudo update-rc.d ssh defaults

    Gruß

  • Ich weiß, dass ich für diesen Beitrag gehasst werde, er muss aber sein.

    Ich weiß nicht wo dein Code aufhört. Daher bin ich mir nicht sicher, ob das hier eine ironische Ausgabe deines Codes ist oder nicht:

    Zitat

    Ein frustierter Villamarinella der in seinem Leben min. 1 Mio if Schleifen programmiert hat, aber easy

    Klicken bitte: http://www.if-schleife.de/ :P :P

  • Also ein Gleichheitszeichen oder 2 3 4, das ist egal.

    Und ich würde tausend Eide schwören ich hätte es mit Spaces probiert, werde ich auch gemacht haben, aber dann wohl was anderes falsch geamcht.

    Und JAAAAAAAAAAAAA
    es waren die Spaces!
    Wobei dann auch wieder egal ist wie viele :)

    Nur, Klammer, Spaces, Anführungszeichen, da ist doch eine unendliche Fehlerquelle vorprogrammiert.

    Ich werde das Forum hier jetzt umbenennen in "Expressforum", Lösungen gleich zum Mitnehmen.
    Und da Ihr so nett seid erkläre ich mal kurz meine Situation.
    Ich bin ein alter Hase, old school mit C, pascal, Basic und egal was, alles berufliche immer noch unter MS-DOS.
    Jetzt bin ich ja nun schon eine Weile hier aktiv und warum ich nun so dumpfe Probleme habe, letztens der mount syntax. Ich habe nun seit 2 Monaten gewirbelt, etliche Systeme installiert, kann also bestens Video und Audio streamen, SMS versenden, mit 3G ins Internet usw. Nur da habe ich nur Tutorials gepastet und mal einige Zeilen abgeändert. Nun nachdem das alles erledigt ist fange ich an selber zu programmieren und da hänge ich schon an einer simplen IF Abfrage.
    Ich habe das fertige Programm in meiner Haus- und Hof Sprache ( Clipper, datenbanksprache ) wie C im Kopf und hänge dann an der zweiten Zeile hier schon fest. Und das frustiert ungemein. Naja, solange ich da auf Euch zählen kann.....................
    Ich bin 66, na und?
    Woran knobel ich gerade? Ein farbiges Log zu erstellen, die Welt ist doch so schon trist genug.
    VillaMarinella

    Und nochmal vielen Dank.

  • Zitat

    Ich bin 66, na und?


    Wenn du wirklich 66 Jahre alt bist dann bist du das beste Beispiel, dass die IT kein Alterslimit kennt und jeder alles erlernen und verstehen kann =)


  • Also ein Gleichheitszeichen oder 2 3 4, das ist egal.

    Sorry, ich wollte nur helfen. Bei der Shebang dachte ich, es wäre ein Shell-Script. Und da darf es, zumindest bei meiner Shell, nur ein Gleichheitszeichen sein.
    In Bash geht es tatsächlich auch mit 2 Gleichheitszeichen. Mit 3 4 allerdings bei mir nicht, komisch. :s

  • Ich muss mich noch bedanken, das mit SSH hat prima funktioniert.

    Danke
    VillaMarinella
    Automatisch zusammengefügt:
    Nun ja, ganz so ist es ja nicht .
    Ich bringe 30 Jahre Programmiererfahrung mit.
    Nur, ich rauche nicht mehr, Bacardi ist auch vorbei, da schlägt der Frust noch heftiger zu.
    Ich verbrenne zuviel Kraft mit der Form und nicht mit dem Inhalt.
    In 6 Monaten spiele ich in Eurer Liga, nicht zuletzt Dank Eurer Hilfe:-)
    VM



    Wenn du wirklich 66 Jahre alt bist dann bist du das beste Beispiel, dass die IT kein Alterslimit kennt und jeder alles erlernen und verstehen kann =)

    Einmal editiert, zuletzt von villamarinella (18. Juli 2015 um 13:40)

  • Wenn man 2x = verwendet wird ein genauerer Vergleich erzwungen. Wenn man nur 1x = nutzt wird ein String verglichen. Das macht also schon einen Unterschied ob man nur 1x oder 2x = verwendet.

    Desweiteren lag dein Problem vermutlich an dem nicht vorhandenen Leerzeichen zwischen [ und "$ww" sowie "$rr" und ]. Die musst du aber in jedem Fall unbedingt haben - das mag weder sh noch bash.
    sh ist zudem älter als bash und kann dementsprechend nicht so viel. In jedem Fall sollte daher bash bevorzugt werden.

    Das Umleiten der 'date' Ausgabe in eine Datei und anschließend wieder via cat in eine Variable schreiben, macht eigentlich kein Sinn aber verursacht zudem unnötige Schreibvorgänge auf der SD, die aber nicht unendlich viele verträgt... Wenn es denn trotzdem unbedingt in eine Datei geschrieben werden muss, dann verwendet dafür am besten einen tmpfs Ordner... Da würde sich zB /tmp/ anbieten, allerdings muss man auch dies erst für tmpfs freischalten, was über /etc/default/tmpfs gemacht werden kann.
    Sinnvoller wäre allerdings eine direkte Prüfung:

    Code
    if [ "$(date +%A)" -eq "Samstag" ]; then
        echo Gleich
    fi

    -eq bedeutet: equal
    Ist also das selbe wie = nur eine andere Schreibweise.

    Siehe dazu auch: http://www.tldp.org/LDP/abs/html/comparison-ops.html

  • Danke für die ausführliche Erklärung.
    Warum in die Datei schreiben?
    Weil ich, wie erwähnt, zu dumm war ( und bin ) den Wert direkt in eine Variable zu transferieren.
    Und das mit den Leerzeichen, ich habe das OHNE aus einer direkten LINUX Seite rauskopiert, das mit den Leerzeichen hatte ich auch schon gelesen, nur wo genau und wie genau, das ist ja das Elend, das war nirgends erklärt.
    Und Danke für das eq ( equal), deswegen habe ich keine Beispiele mit = gefunden.
    Der Nebel lichtet sich. Jedenfalls weiss ich nun worauf ich achten muss.
    VM

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!