Re: Script

From: Oliver Fromme <olli(at)secnetix.de>
Date: Fri, 3 Aug 2001 20:26:18 +0200 (CEST)

Dejan Grujin <DGrujin(at)b-o-p.de> wrote:
> wie übergebe ich einem Program bestimmte Werte, z.B wenn ich ein shell
> script mache, das adduser aufruft?

#!/bin/sh -
/usr/sbin/adduser -home /hurz -group doedel -shell /bin/morsh ...

Oder was meinst Du? Du kannst das natürlich auch alles in
Shell-Variablen packen ...

#!/bin/sh -
HOME=/hurz
...
/usr/sbin/adduser -home $HOME ...

Wenn das Skript seinerseits Parameter von seiner Kommando-
zeile nehmen soll, findest Du diese in den Variablen $1, $2
und so weiter.

> Wie werden die einzelnen Werte übergeben, also von der shell aus?

Ich verstehe die Frage nicht ganz. Willst Du wissen, wie
die Shell intern die Parameterübergabe an Binaries hand-
habt?

Die Shell parst das Kommando, macht White-space-splitting,
führt das »Globbing« durch (d.h. Auswerten von Wildcards),
expandiert Variablen und so weiter. Am Ende hat die Shell
einen sogenannten Argument-Vektor -- das erste Element
(argv[0]) ist das Kommando selbst, die folgenden (argv[1]
usw.) sind die Optionen und Parameter. Mit diesen wird
dann der Syscall execve() aufgerufen (nach einem fork()),
um das Programm in einem Child-Prozeß aufzurufen.

Für Details kannst Du die manpages sh(1) und execve(2)
lesen.

Falls das nicht das war, was Du wissen möchtest, solltest
Du Deine Frage etwas präzisieren. ;-)

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"All that we see or seem is just a dream within a dream" (E. A. Poe)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 03 Aug 2001 - 20:26:21 CEST

search this site