man test

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Braindead
Beiträge: 43
Registriert: 05.08.2010 13:02:53

man test

Beitrag von Braindead » 16.11.2013 21:13:23

Ich bin mich gerade auf den LPI 1 am Vorbereiten und ich stoße auf ein seltsames Phänomen, laut man test ist

[ Zeichenkette ] äquivalent zu [ -n ZEICHENKETTE ]

nur wenn ich das teste, erhalte ich bei

Code: Alles auswählen

if [ -n $1 ]
  then  echo "da"
  else echo "nicht da"
fi
immer ein "da" ausgegeben, egal ob ich einen Parameter angebe oder nicht. Ohne den Schalter funktionierte es wie es soll.

Wo liegt mein Denkfehler ?

Danke.

Benutzeravatar
4A4B
Beiträge: 926
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: man test

Beitrag von 4A4B » 16.11.2013 21:27:03

$1 sollte gequotet werden, sonst steht -n isoliert da, wenn kein Parameter angegeben wird:

Code: Alles auswählen

if [ -n "$1" ]
  then  echo "da"
  else echo "nicht da"
fi

Braindead
Beiträge: 43
Registriert: 05.08.2010 13:02:53

Re: man test

Beitrag von Braindead » 16.11.2013 21:30:36

ok, wie war das nochmal mit dem Wald

Merci

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: man test

Beitrag von Cae » 16.11.2013 22:46:41

Dazu sollte noch angemerkt werden, dass du eine zwar valide, aber sehr unuebliche Art der Code-Formatierung verwendest. Besser lesbar und gebraeuchlich waere

Code: Alles auswählen

if [ -n "$var" ]; then
	echo not empty
else
	echo empty
fi
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Braindead
Beiträge: 43
Registriert: 05.08.2010 13:02:53

Re: man test

Beitrag von Braindead » 17.11.2013 09:53:09

@ Cae

stimmt, war aber auch nur zum Test schnell hingeklatscht

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: man test

Beitrag von Meillo » 17.11.2013 10:20:10

Braindead hat geschrieben: stimmt, war aber auch nur zum Test schnell hingeklatscht
Wer bei den Notizen schlampt wird auch bei der Reinschrift schlampen. Und erst recht, wenn es zum Projektende stressig wird. -- Das ist ein Erfahrungswert.
Use ed once in a while!

wanne
Moderator
Beiträge: 7462
Registriert: 24.05.2010 12:39:42

Re: man test

Beitrag von wanne » 17.11.2013 11:46:41

Ich finde das so eigentlich eher übersichtlicher. Wenn es nur eine Zeile für then und else ist mache ich das auch so. Wie ich in C die {} weglasse, wenn nur eine Zeile kommt.
rot: Moderator wanne spricht, default: User wanne spricht.

Braindead
Beiträge: 43
Registriert: 05.08.2010 13:02:53

Re: man test

Beitrag von Braindead » 18.11.2013 09:46:14

Ich finde wenn man schnell einen 3 Zeiler testet, muss man nicht unbedingt den saubersten Code programmieren, das hat nichts damit zu tun, dass man später bei einem Projekt unsauber arbeitet, btw. die für die bash übliche Darstellung der if Abfrage

Code: Alles auswählen

if [ -n "$var" ]; then
   echo not empty
else
   echo empty
fi
finde ich nicht besonderes gelungen, mein Favorit ist eher

Code: Alles auswählen

if [ -n "$var" ]
   then
         echo not empty
   else
         echo empty
fi

Antworten