shell skript: parameter prüfen

  • ich mache meine ersten Versuche in Shellskript.
    einem Skript kann ich ja beim Aufruf Parameter übergeben, die ich dann im Skript mir $1, $2, $3 usw. ansprechen kann.
    Ich möchte 3 Parameter übergeben, wobei der 3 Parameter optional ist. Wie kann ich im Skript prüfen, ob der dritte auch übergeben worden es. Es sollte ein String sein, falls er nicht übergeben worden ist, möchte ich im Skript einen String zuweisen. Ich schaffe es irgendwie nicht, in einer if-Abfrage zu prüfen, ob der Parameter einen Wert übergeben hat oder nicht.?

    Danke

  • Einerseits liefert "$#" die Anzahl der übergebenen Parameter zurück, andererseits liefert test x$3 = "x" genau dann 1 zurück, wenn $3 leer ist.

    So in etwa sollte das funktionieren:

    Code
    if (test $# -eq 3)
     then
     	ARG3=$3
     else
     	ARG3="foo"
     fi

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • Zitat von jeuneS2

    Einerseits liefert "$#" die Anzahl der übergebenen Parameter zurück, andererseits liefert test x$3 = "x" genau dann 1 zurück, wenn $3 leer ist.

    eine andere möglichkeit ist mit 'test -z' (bzw. [ -z ], siehe unten) zu operieren:

    from the manpage of test:

    [-z] STRING
    the length of STRING is nonzero

    [-n] STRING
    the length of STRING is nonzero

    Zitat


    So in etwa sollte das funktionieren:

    Code
    if (test $# -eq 3)

    ist wahrscheinlich geschmacksache, ich finde dass der andere form besser zu lesen ist:

    Code
    if [ $# -eq 3 ] ; then machdas ; else oderdas ; fi

    http://web.utanet.at/charlie/Sams_T…in_24_Hours.tgz

    HTH

    charlie

    :wq!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!