Am Sonntag, 27. März 2005 22:13 schrieb Bernhard Junk:
habe ein script geschrieben, um Filesysteme zu mounten. Sollte das Verzeichnis nicht vorhanden sein, so soll es erzeugt werden. Ich bekomme aber die Fehlermeldung: Syntax error unexpected end of file. Was ist falsch? Ich habe es schon mit fi nach jedem if versucht. Das Gleiche. Bin leider noch unerfahren auf den scripten.
Jedes if muß zwingend mit fi abgeschlossen werden. Die Syntax eines if lautet: if Befehl then Befehl else Befehl fi Anstelle des Zeilenumbruchs kann auch ein Semikolon ; stehen. Befehl ist ein shellbefehl, oder auch Befehlskette. Der elsezweig muß nicht existieren. if, then und fi müssen existieren. Alles was nach dem if und vor dem then steht wird normal ausgeführt, wenn der Rückgabewert 0 ist, dann wird das als wahr interpretiert und alles ausgeführt, was nach dem then und vor dem else, bzw. fi steht. Ist der Rückgabewert irgendwas anderes als eine 0, so wird das als flachs interpretiert und der then Teil übersprungen. Existiert ein elseteil so wird dieser ausgeführt, anschließend hinter dem fi weiter gemacht.
#!/bin/sh # script Mounten vom Server if not exist /mnt/server/bernd
Die shell kennt den Befehl exist nicht. Eine Verneinung wird nicht mit not gemacht. Schau Dir mal den Befehl test an, damit kannst Du unter anderem das machen, was Du willst. Zu ca. 95% folgt nach if ein test (bzw. [ was das gleiche ist). Allerdings schätze ich mal das davon bis zu 20% was anderes, etwa grep, sinniger wäre.
mkdir /mnt/server/bernd
if not exist /mnt/server/daten mkdir /mnt/server/daten
mount -t nfs 192.168.0.1:/home/bernd /mnt/server/bernd mount -t nfs 192.168.0.1:/home/daten /mnt/server/daten
# end
Eine heiß und fettige Möglichkeit wäre, einfach die Datei anzulegen und die evtl. Fehlermeldung zu ignorieren. Mögliche Fehler abzufangen ist aber schon die bessere Idee. So wie Du den mount-Befehl angegeben hast, darf nur root mounten. Bernd