PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ganz einfach eigentlich, nur...



ileus
25-02-2005, 17:22
leider nicht für mich. Habe noch nie Shell programmiert.
Ich möchte ein ganz kleines Skript schreiben und ich benötige eine if-Anweisung. Das ganze sieht so aus:

echo Create new user account
echo -----------------------
if [ -n $1 ]
then
echo $1
else
echo falscher Benutzer
fi

Was ist daran falsch?
Vielen dank,
ileus

d@tenmaulwurf
25-02-2005, 19:57
$1 ist ja der 1. parameter...

falsch daran ist, dass Simikolons fehlen:

richtig:

if [ -n $1 ];
then
echo $1;
else
echo falscher Benutzer;
fi

das 1. simikolon nach if [ -n $1 ] ist zwingend, die anderen sind optional...

peschmae
25-02-2005, 19:59
Mein "test" und das ist was bei [ ] ausgeführt wird, das kennt den Parameter -n nicht. Lässt man den weg ists ok. (Obwohl in der Manpage steht dass man das -n hinschreiben darf wenn man will)

So gehts bei mir:


#!/bin/bash
echo Create new user account
echo -----------------------
if [ $1 ]; then
echo $1
else
echo falscher Benutzer
fi


Nicht unwichtig: am Anfang ein #!/bin/bash wo steht welche Shell denn das Script ausführen soll.
Ausserdem würde ich es mir gleich angewöhnen Codeblöcke bei Ifs und so einzurücken. Das hilft extrem beim lesen.

MfG Peschmä

P.S. das Semikolon nach dem [ ] ist nur nötig wenn man das then auf dieselbe Zeile nimmt. Genau wie sonst überall auch. Bei mir (Bash 3)

ileus
01-03-2005, 23:01
vielen dank für die antworten, ich werde es jetzt mal ausprobieren. werde bestimmt noch ein paar fragen. nochmal danke für die hilfe.

ileus
01-03-2005, 23:22
also ich habe es ausprobiert. mein code sieht so aus:

#!/bin/bash
echo
echo Create new user account
echo -----------------------
if [ $1 ]; then
echo test erfolgreich;
else
echo falsch;
fi

habe die anführungsstriche dran gemacht und weggelassen, ich bekomme immer folgende fehlermeldung:


[root@aqplinux bin]# newUserAccount test
Create new user account
-----------------------
/usr/local/bin/newUserAccount: line 18: syntax error: unexpected end of file

ich bin am verzweifeln. Hilfe.

danke
ileus

Romanday
01-03-2005, 23:52
also ich habe es ausprobiert. mein code sieht so aus:

#!/bin/bash
echo
echo Create new user account
echo -----------------------
if [ $1 ]; then
echo test erfolgreich;
else
echo falsch;
fi

habe die anführungsstriche dran gemacht und weggelassen, ich bekomme immer folgende fehlermeldung:


[root@aqplinux bin]# newUserAccount test
Create new user account
-----------------------
/usr/local/bin/newUserAccount: line 18: syntax error: unexpected end of file

ich bin am verzweifeln. Hilfe.

danke
ileus

Dein Script hat noch gar nicht 18 Zeilen???
Oder hast Du irgendwo ein Zeichen zu viel?

ileus
02-03-2005, 01:35
ich habe nur die kommentare gelöscht. hier der originalcode:

#!/bin/sh
############################################
# New user account
# Simple script to create a new user account
# Expected parameter:
# username
# usergroup
# Author: Alin Radulescu, 23.03.2005
############################################
#!/bin/sh
echo
echo Create new user account
echo -----------------------
if ["$1" -eq "" ]
then
echo "Missing an argument."
exit 1
fi

peschmae
02-03-2005, 08:47
Also bei mir machen hier zwei Sachen Probleme:


if ["$1" -eq "" ]

hat zwei kleine Fehler. Erstens muss nach dem [ ein Leerzeichen (zwingend!) und das -eq ist nur für Zahlen gedacht (siehe man test).

Also:

if [ "$1" = "" ]


oder auch


if [ -z $1 ]

ileus
02-03-2005, 16:33
der fehler lag daran, dass ich das skrippt unter windows erstellt habe und somit die zeilenumbrüche von DOS waren. jetzt läuft alles.

Romanday
02-03-2005, 18:58
dass ich das skrippt unter windows.

Buh
:cool: