Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
OldGod78
- Beiträge: 190
- Registriert: 20.04.2016 20:59:51
-
Kontaktdaten:
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: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
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: 2345
- Registriert: 02.10.2004 01:33:05
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:
Beitrag
von OldGod78 » 21.01.2017 20:23:01
wo leerzeichen ? mit nur einem = gehts auch nicht
-
owl102
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.
-
Radfahrer
Beitrag
von Radfahrer » 22.01.2017 14:29:28
@breakthewall
DAS funktioniert ganz bestimmt nicht!
-
breakthewall
- Beiträge: 507
- Registriert: 30.12.2016 23:48:51
Beitrag
von breakthewall » 22.01.2017 15:06:43
Radfahrer hat geschrieben:@breakthewall
DAS funktioniert ganz bestimmt nicht!
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: 2020
- Registriert: 19.11.2008 20:39:02
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von TuxPeter » 22.01.2017 19:26:09
inne hat geschrieben:Wegen der fehlenden Leerzeichen. Ganz gemeiner Fehler
also so:
sollte es gehen.
-
tobo
- Beiträge: 2339
- Registriert: 10.12.2008 10:51:41
Beitrag
von tobo » 22.01.2017 19:38:37
Kann so funktionieren, ja. Richtig ist es allerdings so wie breakthewall geschrieben hat:
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.
-
Tintom
- Moderator
- Beiträge: 3066
- Registriert: 14.04.2006 20:55:15
- Wohnort: Göttingen
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:
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: 2339
- Registriert: 10.12.2008 10:51:41
Beitrag
von tobo » 22.01.2017 19:58:38
Und wieso man dann = und eben nicht == wählen sollte, steht ja da.