Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[geloest] bash if laeuft nicht

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
hissshack
Newbie
Newbie
Beiträge: 21
Registriert: 9. Aug 2005, 16:32

[geloest] bash if laeuft nicht

Beitrag von hissshack »

Hi,
ich versuch schon die ganze Zeit die einfache If-Bedinungung zum
laufen zu bekommen die man in jedem Tutorial findet:

#!/bin/bash
T1="foo"
T2="bar"
if [ "$T1" = "$T2" ]; then
echo expression evaluated as true
else
echo expression evaluated as false
fi

ich bekomm staendig die Fehlermeldung: [foo=bar] command not found.
Ich hab n Suse 9.3
Zuletzt geändert von hissshack am 17. Sep 2005, 03:49, insgesamt 1-mal geändert.
Bin blutiger Anfänger ... also sorry für dumme Fragen ... 8)
traffic
Guru
Guru
Beiträge: 2750
Registriert: 13. Feb 2005, 05:50

Re: bash if laeuft nicht

Beitrag von traffic »

Unter welchem Dateinamen hast Du das Skript abgespeichert? Wie startest Du das Skript?
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Re: bash if laeuft nicht

Beitrag von TeXpert »

hissshack hat geschrieben:ich bekomm staendig die Fehlermeldung: [foo=bar] command not found.
Ich hab n Suse 9.3
welche Shell? mit welchem Editor geschrieben?...

denn an sich passt die Syntax

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Benutzeravatar
Linux-Guru
Member
Member
Beiträge: 187
Registriert: 25. Apr 2005, 21:23
Wohnort: Weltstadt Hochdorf
Kontaktdaten:

Beitrag von Linux-Guru »

Ich würde es mal mit den logischen Operator ausprobieren.

Code: Alles auswählen

#!/bin/bash 
T1="foo" 
T2="bar" 
if [ "$T1" == "$T2" ]; then 
echo expression evaluated as true 
else 
echo expression evaluated as false 
fi 
Jetzte geht das ganze auch.
Gruß
Linux - Guru
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

in diesem Fall reicht auch ein "=" aus, denn siehe man bash:
CONDITIONAL EXPRESSIONS
[...]
string1 == string2
True if the strings are equal. = may be used in place of == for strict POSIX compliance.

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
hissshack
Newbie
Newbie
Beiträge: 21
Registriert: 9. Aug 2005, 16:32

Beitrag von hissshack »

danke mal fuer die Antworten, sorry dass ich erst jetzt schreibe.

Ich hab den Code so in mehreren Tutorials gefunden wie z.B.
http://www.faqs.org/docs/Linux-HOWTO/Ba ... html#ss7.1

Die if-Bedinung springt immer nach ELSE, auch wenn die Bedingung
"true" sein sollte. Ein logischer Operator == bringt das gleiche Ergebnis.

Das Skprit heisst user.shell und wurde unter pico editiert.
Das Problem ist nur die if-Bedingung, der restliche Code funktioniert.

An der Syntax seh ich keinen Unterschied zum Tutorial, deswegen ists
auch sehr fraglich fuer mich warum ausgerechnet nur dieses Commando
nicht laeuft.
Bin blutiger Anfänger ... also sorry für dumme Fragen ... 8)
hissshack
Newbie
Newbie
Beiträge: 21
Registriert: 9. Aug 2005, 16:32

Beitrag von hissshack »

Hallo,
ich habs inswischen zum laufen bekommen.
Und zwar lags an der Syntax ... warum .. keine Ahung .. den einzigen
Unterschied den ich feststellen konnte ware die Leerzeichen.
Die If-Bedingung muss genau so aussehen

if [ "$T1" = "$T2" ]; then

.. auf die Leerzeichen muss geachtet werden, und der logische operator ist
"=", sonst nichts :roll:
Danke an alle
Bin blutiger Anfänger ... also sorry für dumme Fragen ... 8)
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

bei dieser Sammlung Mist fällt mir nur wieder der Nuhr ein :(

also
hissshack hat geschrieben:Hallo,
ich habs inswischen zum laufen bekommen.
Und zwar lags an der Syntax ... warum .. keine Ahung .. den einzigen
Unterschied den ich feststellen konnte ware die Leerzeichen.
Die If-Bedingung muss genau so aussehen
wenn Du den Text aus Deinem 1. Post per C&P überträgst, siehst Du, dass dort die Whitespaces drin stehen, also in dem 1. Post steht die richtige Syntax, was meinst Du, warum wir sagen, dass die Syntax korrekt aussieht.
und der logische operator ist
"=", sonst nichts :roll:
Lötzinn. der logische Operator ist "==" nur in dem Fall, dass 2 Strings verglichen werden ist "=" zulässig

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Antworten