Shellskript: noch eine Verständnisfrage
Hallo ML, Ich habe noch eine Frage zu einem Shellskript: Das Skript sieht in Auszügen wie folgt aus : ... ========================= uptodate() { if test -f "/lib/modules/`uname -r`/misc/vmnet.o"; then echo "ok" else echo "not ok" fi } start() { if test "`uptodate`" = "not ok"; then if /usr/bin/vmware-config.pl -d; then echo "vmware_modules: Compiled" else echo "vmware_modules: Compilation Failed" fi else echo "vmware_modules: Uptodate" fi } =========================== ... =========================== # See how we were called. case "$1" in start) start RETVAL=$? # if test "$RETVAL" -eq 0; then # touch /var/lock/subsys/vmware-kernel-modules # fi ;; ============================ ... Wenn ich das Skript per "/etc/init.d/vmware_modules start" aufrufe, sehe ich auf der Kommandozeile folgendes: pc53082:~/skripte # /etc/init.d/vmware_modules start vmware_modules: Uptodate Es wird nur das echo aus der Funktion "start" auf der Kommandozeile ausgegeben, nicht das echo aus der Funktion "uptodate". Jetzt habe ich ja gestern hier in der ML gelernt, daß `` und $() jeweils eine subshell starten (siehe Posting "Verständnisfrage zu einem shellskript"). Aber in dem gestrigen Posting wurde die Funktion auch per `` aufgerufen, und das echo in der Funktion wurde in der Kommandozeile angezeigt. Oder lag das da dran, daß die Funktion zusätzlich noch per echo aufgerufen wurde ? Danke für alle Antworten. Bernd -- Bernd Lentes Systemadministration Institut für Entwicklungsgenetik HelmholtzZentrum münchen bernd.lentes@helmholtz-muenchen.de 089 3187 1241 http://www.helmholtz-muenchen.de/idg -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Bernd Am 2009-09-03 11:29, schrieb Lentes, Bernd:
Ich habe noch eine Frage zu einem Shellskript: Das Skript sieht in Auszügen wie folgt aus :
Ich bin zwar nicht der Profi und es gibt bestimmt noch mehr Moeglichkeiten.
... ========================= uptodate() { if test -f "/lib/modules/`uname -r`/misc/vmnet.o"; then echo "ok" else echo "not ok" fi }
uptodate() { if test -f "/lib/modules/`uname -r`/misc/vmnet.o"; then vmnet=true else vmnet=false fi }
start() { if test "`uptodate`" = "not ok"; then if /usr/bin/vmware-config.pl -d; then echo "vmware_modules: Compiled" else echo "vmware_modules: Compilation Failed" fi else echo "vmware_modules: Uptodate" fi }
start() { uptopdate if ! ${vmnt} then if /usr/bin/vmware-config.pl -d; then echo "vmware_modules: Compiled" else echo "vmware_modules: Compilation Failed" fi else echo "vmware_modules: Uptodate" fi } Als Idee Holger -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Bernd Am 2009-09-03 11:29, schrieb Lentes, Bernd:
Ich habe noch eine Frage zu einem Shellskript: Das Skript sieht in Auszügen wie folgt aus :
Ich bin zwar nicht der Profi und es gibt bestimmt noch mehr Moeglichkeiten.
... ========================= uptodate() { if test -f "/lib/modules/`uname -r`/misc/vmnet.o"; then echo "ok" else echo "not ok" fi }
uptodate() { if test -f "/lib/modules/`uname -r`/misc/vmnet.o"; then vmnet=true else vmnet=false fi }
start() { if test "`uptodate`" = "not ok"; then if /usr/bin/vmware-config.pl -d; then echo "vmware_modules: Compiled" else echo "vmware_modules: Compilation Failed" fi else echo "vmware_modules: Uptodate" fi }
start() { uptodate if ! ${vmnet} then if /usr/bin/vmware-config.pl -d; then echo "vmware_modules: Compiled" else echo "vmware_modules: Compilation Failed" fi else echo "vmware_modules: Uptodate" fi } Als Idee Holger -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Lentes,! On Do, 03 Sep 2009, Lentes, Bernd wrote:
... ========================= uptodate() { if test -f "/lib/modules/`uname -r`/misc/vmnet.o"; then echo "ok" else echo "not ok" fi }
start() { if test "`uptodate`" = "not ok"; then if /usr/bin/vmware-config.pl -d; then echo "vmware_modules: Compiled" else echo "vmware_modules: Compilation Failed" fi else echo "vmware_modules: Uptodate" fi } ===========================
...
=========================== # See how we were called. case "$1" in start) start RETVAL=$? # if test "$RETVAL" -eq 0; then # touch /var/lock/subsys/vmware-kernel-modules # fi ;; ============================ ...
Wenn ich das Skript per "/etc/init.d/vmware_modules start" aufrufe, sehe ich auf der Kommandozeile folgendes: pc53082:~/skripte # /etc/init.d/vmware_modules start vmware_modules: Uptodate
Es wird nur das echo aus der Funktion "start" auf der Kommandozeile ausgegeben, nicht das echo aus der Funktion "uptodate".
Richtig, das echo aus der funktion wird als Rückgabewert in der If-Bedingung geprüft.
Aber in dem gestrigen Posting wurde die Funktion auch per `` aufgerufen, und das echo in der Funktion wurde in der Kommandozeile angezeigt. Oder lag das da dran, daß die Funktion zusätzlich noch per echo aufgerufen wurde ?
Ja. Mit freundlichen Grüßen Christian -- Biting someone with your natural teeth is "simple assault," while biting someone with your false teeth is "aggravated assault." [real standing law in Louisana, United States of America] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Christian Brabandt schrieb:
Es wird nur das echo aus der Funktion "start" auf der Kommandozeile ausgegeben, nicht das echo aus der Funktion "uptodate".
Richtig, das echo aus der funktion wird als Rückgabewert in der If-Bedingung geprüft.
Aber in dem gestrigen Posting wurde die Funktion auch per `` aufgerufen, und das echo in der Funktion wurde in der Kommandozeile angezeigt. Oder lag das da dran, daß die Funktion zusätzlich noch per echo aufgerufen wurde ?
Ja.
Alles klar. Danke. Bernd-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Christian Brabandt
-
Holger Bruenjes
-
Lentes, Bernd