ubuntuusers.de

[Shell] if-Anweisung funzt nicht ganz?

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

Kirodema

Avatar von Kirodema

Anmeldungsdatum:
17. Dezember 2007

Beiträge: 103

Wohnort: Winden am See

Tag,

hab vor, ein bissi was über Shell-Skripte zu lernen und bin dann halt auf die Seite http://www.tutorials.de/forum/linux-tutorials/249732-unix-einfuehrung-shell-scripte.html gestossen. Und da is ein Skript dabei, was bei mir nicht funktioniert, obwohl es das eigentlich sollte (auf einem anderen Rechner schon ausprobiert und es ging):

if [ $1 == $2 ]
then

    echo "Die beiden Zeichenfolgen sind identisch."

else

    echo "$1 unterscheidet sich von $2!"

fi
echo ""


Und wenn ich es aufrufe, kommt folgendes:

kirodema@kirodema-laptop:~/shellskripte$ sh 05_strings_vergleichen hallo hallo
[: 10: ==: unexpected operator
hallo unterscheidet sich von hallo!

Kann mir da bitte wer helfen?

menschenkind

Anmeldungsdatum:
29. Oktober 2007

Beiträge: 74

Die Shell (sh) kennt [ ] nicht, probier das Ganze bitte mit der bash. Dann sollte es klappen.

Gruß, Björn

menschenkind

Anmeldungsdatum:
29. Oktober 2007

Beiträge: 74

Du kannst natürlich auch einfach in Deinem Skript die zu verwendende Shell hinterlegen:

#!/bin/bash
if test $1 == $2
then
    echo "Die beiden Zeichenfolgen sind identisch."
else
    echo "$1 unterscheidet sich von $2!"
fi
echo ""


Wenn Du dann Dein Skript mit z.B. "chmod 750 script.sh" ausfürbar machst kannst Du es auch direkt mit z.B. ./script.sh aufrufen.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

Probier mal

kirodema@kirodema-laptop:~/shellskripte$ /bin/bash 05_strings_vergleichen hallo hallo

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

(nur 2. Sieger)

SiJux

Avatar von SiJux

Anmeldungsdatum:
8. Juli 2007

Beiträge: 53

wahhhhh

#!/bin/bash
if test $1 == $2
then
    echo "Die beiden Zeichenfolgen sind identisch."
else
    echo "$1 unterscheidet sich von $2!"
fi
echo "" 


is falsch

#!/bin/bash
if [ "$1" = "$2" ]; then
    echo "Die beiden Zeichenfolgen sind identisch."
else
    echo "$1 unterscheidet sich von $2!"
fi

so sollte es funktionieren ☺
btw. das buch "bash - kurz und gut" http://www.edv-buchversand.de/product.php?cat0=750000791&idx0=1&cat1=750000807&idx1=15&gr=b%FCcher&cnt=product&id=or-533&lng=0" is ziemlich geil! lohnt sich zu lesen!!

Kirodema

(Themenstarter)
Avatar von Kirodema

Anmeldungsdatum:
17. Dezember 2007

Beiträge: 103

Wohnort: Winden am See

menschenkind hat geschrieben:

Du kannst natürlich auch einfach in Deinem Skript die zu verwendende Shell hinterlegen:

#!/bin/bash
if test $1 == $2
then
    echo "Die beiden Zeichenfolgen sind identisch."
else
    echo "$1 unterscheidet sich von $2!"
fi
echo ""


Wenn Du dann Dein Skript mit z.B. "chmod 750 script.sh" ausfürbar machst kannst Du es auch direkt mit z.B. ./script.sh aufrufen.

so funktionierts. Danke für eure Hilfe 😀

menschenkind

Anmeldungsdatum:
29. Oktober 2007

Beiträge: 74

SiJux hat geschrieben:

wahhhhh

#!/bin/bash
if test $1 == $2
then
    echo "Die beiden Zeichenfolgen sind identisch."
else
    echo "$1 unterscheidet sich von $2!"
fi
echo "" 


is falsch

Hy SiJux, das stimmt nicht, das das falsch ist! 👿 Bitte teste Deine Aussagen vorher! Das ist absolut richtig und auch vorhin von mir getestet. In aller Regel teste ich meine Beispiele, bevor ich sie hier im Forum poste. Den Befehl "test" gibt es sowohl als "shell builtin", als auch unter /usr/bin/test und er funktioniert gut. Auch wenn das test aus der Shell etwas anders funktioniert wie das unter /usr/bin/ 😉 Damit habe ich schon vor 10 Jahren Programme auf einer HP-UX geschrieben.

Gruß, Björn

menschenkind

Anmeldungsdatum:
29. Oktober 2007

Beiträge: 74

Und Kirodema das ja auch schon getestet und für gut befunden. ☺

Antworten |