1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Software und Anwendungen
  3. Betriebssysteme

shell skript: parameter prüfen

    • Linux
  • Sicka
  • 23. November 2004 um 11:34
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Sicka
    Punkte
    240
    Beiträge
    34
    • 23. November 2004 um 11:34
    • #1

    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

  • jeuneS2
    Punkte
    1.227
    Beiträge
    238
    • 23. November 2004 um 12:00
    • #2

    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
  • charlie
    Punkte
    191
    Beiträge
    38
    • 23. November 2004 um 16:16
    • #3
    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

  • Maximilian Rupp 27. Dezember 2024 um 12:09

    Hat das Thema aus dem Forum Betriebssysteme nach Betriebssysteme verschoben.

  1. Datenschutzerklärung
  2. Impressum