1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • 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
  • Sicka
    5
    Sicka
    Mitglied
    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
    11
    jeuneS2
    Mitglied
    Reaktionen
    17
    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

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

  • charlie
    5
    charlie
    Mitglied
    Reaktionen
    1
    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

    :wq!

  • Maximilian Rupp 27. Dezember 2024 um 12:09

    Hat das Thema aus dem Forum Betriebssysteme nach Betriebssysteme verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung