falsche ausgabe bei if ?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

falsche ausgabe bei if ?

Beitrag von OldGod78 » 21.01.2017 20:04:42

Code: Alles auswählen

user="bla"
if [ $user=="user1" ]; then
	echo "Ja: $user"
else
	echo "nicht user1"
fi
wieso erhalte ich "Ja" ??

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: falsche ausgabe bei if ?

Beitrag von inne » 21.01.2017 20:11:55

Wegen der fehlenden Leerzeichen. Ganz gemeiner Fehler ;-)
Zuletzt geändert von Anonymous am 21.01.2017 20:12:43, insgesamt 1-mal geändert.

Liffi
Beiträge: 2306
Registriert: 02.10.2004 01:33:05

Re: falsche ausgabe bei if ?

Beitrag von Liffi » 21.01.2017 20:12:19

Versuch mal Leerzeichen um deinen Vergleich zu machen...
EDIT:: evtl. willst du auch nur ein Gleichheitszeichen benutzen, wobei das in der bash keine Änderung bringen wird.

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: falsche ausgabe bei if ?

Beitrag von OldGod78 » 21.01.2017 20:23:01

wo leerzeichen ? mit nur einem = gehts auch nicht

owl102

Re: falsche ausgabe bei if ?

Beitrag von owl102 » 21.01.2017 20:32:13

inne hat geschrieben:Wegen der fehlenden Leerzeichen. Ganz gemeiner Fehler ;-)
Was ist daran gemein? test bzw. [ will wie alle anderen Unix/Linux Kommandos Leerzeichen zum Trennen der Parameter.

Ich schreibe ja auch nicht "cd/ordner" oder "ls-l*" und wundere mich dann, daß das nicht so recht funktioniert.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: falsche ausgabe bei if ?

Beitrag von breakthewall » 22.01.2017 02:52:03

Versuch es mal hiermit:

Code: Alles auswählen

user="bla"
if [ "$user" = "user1" ]
    then
	       echo "hallo user1"
    else
	       echo "nicht user1"
fi

Radfahrer

Re: falsche ausgabe bei if ?

Beitrag von Radfahrer » 22.01.2017 14:29:28

@breakthewall
DAS funktioniert ganz bestimmt nicht! :wink:

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: falsche ausgabe bei if ?

Beitrag von breakthewall » 22.01.2017 15:06:43

Radfahrer hat geschrieben:@breakthewall
DAS funktioniert ganz bestimmt nicht! :wink:
Eben hab ich so überlegt, aber eigentlich kann das nur ein Scherz sein. ;P

Code: Alles auswählen

user="bla"
if [ "$user" = "user1" ]; then echo "hallo user1"; else echo "nicht user1"; fi
nicht user1

Code: Alles auswählen

user="user1"
if [ "$user" = "user1" ]; then echo "hallo user1"; else echo "nicht user1"; fi
hallo user1

TuxPeter
Beiträge: 1963
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: falsche ausgabe bei if ?

Beitrag von TuxPeter » 22.01.2017 19:26:09

inne hat geschrieben:Wegen der fehlenden Leerzeichen. Ganz gemeiner Fehler ;-)
also so:

Code: Alles auswählen

if [ $user == "user1" ]; then
sollte es gehen.

tobo
Beiträge: 1991
Registriert: 10.12.2008 10:51:41

Re: falsche ausgabe bei if ?

Beitrag von tobo » 22.01.2017 19:38:37

Kann so funktionieren, ja. Richtig ist es allerdings so wie breakthewall geschrieben hat:

Code: Alles auswählen

if [ "$user" = "user1" ]; then
Sprich: Quoting bei der Variablensubstitution und ein einfaches =.
Zuletzt geändert von tobo am 22.01.2017 19:54:52, insgesamt 1-mal geändert.

Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: falsche ausgabe bei if ?

Beitrag von Tintom » 22.01.2017 19:51:10

tobo hat geschrieben:Kann so funktionieren, ja. Richtig ist es allerdings so wie breakthewall geschrieben hat:

Code: Alles auswählen

if [ "$user" = "user1" ]; then
Mit der BASH geht beides:
man bash hat geschrieben: CONDITIONAL EXPRESSIONS
[...]
string1 == string2
string1 = string2
True if the strings are equal. = should be used with the test command for POSIX conformance.

tobo
Beiträge: 1991
Registriert: 10.12.2008 10:51:41

Re: falsche ausgabe bei if ?

Beitrag von tobo » 22.01.2017 19:58:38

Und wieso man dann = und eben nicht == wählen sollte, steht ja da.

Antworten