Hi, ich habe folgendes Shell-Skript geschrieben. Es soll OOo-wrapper ausführen aber die Option --skip-check hinzufügen. Aber das funktioniert nicht. Kann mir einer sagen warum? #!/bin/sh $OOo_wrapper="./OOo-wrapper.prog" $newoption="--skip-check" $OOo_wrapper $newoption $1 exit 0 Und wie kann ich eine Abfrage einbauen, ob $1 überhaupt übergeben wurde? philipp
On Thursday 04 March 2004 18:20, Philipp Otte wrote:
ich habe folgendes Shell-Skript geschrieben. Es soll OOo-wrapper ausführen aber die Option --skip-check hinzufügen. Aber das funktioniert nicht. Kann mir einer sagen warum?
Weil Du Perl-Syntax verwendest - Variablen haben in Shell-Skripten bei einer Zuweisung kein "$" am Anfang.
#!/bin/sh $OOo_wrapper="./OOo-wrapper.prog" $newoption="--skip-check"
#!/bin/sh OOo_wrapper="./OOo-wrapper.prog" newoption="--skip-check" $OOo_wrapper $newoption $1 exit 0 "exit 0" ist hier ziemlicher Unfug - am Scriptende ist sowieso Schluß, und 0 wird standardmäßig zurückgegeben. Es wäre wahrscheinlich sinnvoler, den Rückgabewert des aufgerufenen Programms zurückzugeben: exec $Ooo_wrapper $newoption $1 IMHO ist es eleganter, ganz auf $OOo_wrapper zu verzichten - einersehts wegen Lesbarkeit, andererseits, weil so eine Variable ja auch schon mal leer sein kann (dann wird das nächste als Kommando genommen, und hoffentlich steht da nichts drin, was etwas kaputtmacht): exec ./OOo_wrapper.prog $newoption $1
Und wie kann ich eine Abfrage einbauen, ob $1 überhaupt übergeben wurde?
if [ "$1" != "" ]; then
# mach was
fi
...aber das kannst Du Dir hier eigentlich sparen: Wenn $1 leer ist, wird
einfach nichts übergeben, und das paßt ja eigentlich.
CU
--
Stefan Hundhammer
Hallo, Am Thu, 04 Mar 2004, Philipp Otte schrieb: [..]
Und wie kann ich eine Abfrage einbauen, ob $1 überhaupt übergeben wurde?
Brauchst du nicht. ==== #!/bin/sh exec ./OOo-wrapper.prog --skip-check "$@" ==== Aber nimm besser den absoluten Pfad zu OOo-wrapper.prog. -dnh -- "But you've got to hand it to IBM, they know how to design hardware. The servers all had handles to pick them up and throw them out of the window...." --Juergen Nieveler
Hallo,
Kann mir einer sagen warum?
#!/bin/sh $OOo_wrapper="./OOo-wrapper.prog" $newoption="--skip-check"
Als erstes solltest Du mal die $ bei der Variablen-Deklaration weglassen. Also OOo_wrapper="./OOo-wrapper.prog" Sonst solltest Du eh einen Fehler bekommen. Aber ohne das $ sollte es gehen.
$OOo_wrapper $newoption $1 exit 0
Und wie kann ich eine Abfrage einbauen, ob $1 überhaupt übergeben wurde?
Du kannst die Scriptvariable $# prüfen, in der die Anzahl der erhaltenen Parameter steht. z.Bsp. if [ "$#" -lt "1" ]; then echo "Das Skript erwartet mindestens 1 Argumente" exit 1 fi Gruss, Michael
Hi Philipp, abgesehen von den führenden $, welche schon in vorherigen Postings erwähnt wurden, empfehle ich Dir in weiteren Shellscripten zum Debugging mal in der zweiten Zeile den Befehl "set -x" einzutragen. #!/bin/bash set -x ... exit 0 Das hilft oft bei der Fehlersuche. Wenns Script funktioniert, auskommentieren nicht vergessen. Gruß, Jochen Am Don, 2004-03-04 um 18.20 schrieb Philipp Otte:
Hi, ich habe folgendes Shell-Skript geschrieben. Es soll OOo-wrapper ausführen aber die Option --skip-check hinzufügen. Aber das funktioniert nicht. Kann mir einer sagen warum?
#!/bin/sh $OOo_wrapper="./OOo-wrapper.prog" $newoption="--skip-check"
$OOo_wrapper $newoption $1 exit 0
Und wie kann ich eine Abfrage einbauen, ob $1 überhaupt übergeben wurde? philipp
participants (5)
-
David Haller
-
jo_sch@t-online.de
-
Michael Heck
-
Philipp Otte
-
Stefan Hundhammer