einfaches vergleich Script

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    ich möchte für meinen Pi ein Shellscript schreiben.
    Um genauer rauszufinden wie die if Funktion funktioniert, habe ich mal was kleines getippt.

    #!/bin/bash

    variable=1

    if ($variable = 1)
    then echo "Jap"
    else echo "Nein"
    fi

    Es soll einfach nur ausgeben wenn die Variable den Wert 1 hat, dass "Jap" ausgegeben wird.
    Irgendwie funktioniert das nicht so ganz


    danach die Rechte vergeben /chmod 755 <Name>

    dann ausführen

    ./<Name>

    kommt folgende Meldung =(

    ./<Name>: line 4: 1: command not found
    nein


    hoffe ihr könnt mir helfen =(

    danke

  • Runde Klammern sind in bash äußerst untypisch... Man muss aber auch unbedingt bash betonen denn runde Klammern funktionieren nicht mit /bin/sh !

    Eigentlich nutzt man in bash doch nur eckige Klammern, also:

    Code
    if [[ $var ]]; then
    ...


    oder:

    Code
    [[ $var == "1" ]] && echo equal || echo different


    bash Operaten werden hier erklärt: http://tldp.org/LDP/abs/html/comparison-ops.html


  • Runde Klammern sind in bash äußerst untypisch...


    Es ist aber auch nur die bash die eckige Klammern in if tests benutzt. Mir fällt keine andere Programmiersprache ein. Üblich sind Klammern oder einfach auch kein spezielles Token (Ruby, Python, ...) . Da ich nicht mit bash als meiner ersten Programmiersprache angefangen habe gefällt mir persönlich das mit den (( sehr. Auch dass die Logic der von C entspricht (0=false, <>0=true) was bei bash if Tests ja gerade umgekehrt ist. Vielleicht hat der TE ja auch ähnliche Progrmmiererfahrungen.

    Zitat


    Man muss aber auch unbedingt bash betonen denn runde Klammern funktionieren nicht mit /bin/sh !


    Guter Punkt. Speziell wenn man portabel sein will ist das mit den (( natürlich nix.

    Hier wird das ganz gut mit dem [, [[ und (( in der bash beschrieben.

    • Offizieller Beitrag

    Die Klammern in bash und viel schlimmer -eq und co machen mich jedesfall fertig ;), [],{} werden in python für nur für bestimmte typen benötigt. (()) find ich auch verwirrend....

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • Die Bash kann schon sehr verwirrend und tückisch sein - sie entstand ja auch in einer Zeit, da war wahrscheinlich noch nicht mal BASIC oder der PC erfunden.
    Aber was sich halt mal als Standard durchgesetzt hat ... ;)

  • danke, für die Hilfe.
    Ich habe nun einen RFID Reader der per USB läuft und Werte automatisch einließt.
    Ich möchte nun, das wenn der Richtige Code eingelesen wurde (ein bestimmter Chip)
    das ein GPIO angesteuert wird.
    Wie wäre das am besten Realisierbar? Habe Kenntnisse in Java

Jetzt mitmachen!

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