Übergabeparameter

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Michi0209, 07.03.2008.

  1. #1 Michi0209, 07.03.2008
    Michi0209

    Michi0209 Mitglied

    Dabei seit:
    29.06.2006
    Beiträge:
    46
    Zustimmungen:
    0
    Hallo zusammen,

    wenn ich Übergabeparameter an eine Anweisen habe kann ich diese ja mittels $1 usw. anzeigen und damit weiterarbeiten.

    wenn ich diese aber mit einer for-schleife ausgeben will, wie muß ich dann auf diese Variable zugreifen?

    Code:
    #!/bin/sh
    export LC_ALL=de_DE.ISO8859-1
    
    echo "Anzahl Übergabe: $#";
    
    for ((i=1;i<=$#;i++))
    do
    	echo "$i"; -> Hier würde ich gerne meine Parameter ausgeben?!!
    done

    Danke für Eure Hilfe
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 07.03.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Hatten wir schon:

    -> http://www.unixboard.de/vb3/showthread.php?t=35241

    Zitat Wolle:

    bzw.

    Code:
    #cat test.sh
    #!/bin/bash
    anz=$#;
    while [  $# -gt 0 ] ;do
    
            A[$#]="$1"
            shift;
    done
    echo "Last Parameter Nr. $anz Value ${A[1]}"
    echo "Other Parameter:"
    for (( i=$anz;$i > 1 ; ((i--)) ));do
            echo Parameter : ${A[$i]};
    done
     
  4. #3 Gott_in_schwarz, 07.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    und wenn du sie nicht extra in ein array packen willst, sondern wirklich nur drüberiterieren, kannst du das ziemlich direkt per for-schleife auch machen:
    Code:
    #!/bin/bash
    for parameter in "$@"; do
        echo $parameter
    done
    im array $@ (bzw der speziellen variable) sind alle parameter, die dem skript übergeben wurden, mit whitespaces getrennt abgespeichert.

    zum besseren verständnis:
    Code:
    #!/bin/bash
    echo "Die dem Skript uebergebenene Parameter sind:"
    echo "$@"
    und die eigentliche for-schleife der bash (also nicht diese c-syntax emulation) iteriert halt eine angegebene variable über eine liste von strings, welche durch whitespaces getrennt sind. (for VARIABLE in liste; do #bla; done)

    Code:
    for item in bla, zomg blub... ---hihihi---; do
        echo "$item"
    done
    gibt aus:
    Code:
    bla,
    zomg
    blub...
    ---hihihi---
     
  5. #4 supersucker, 07.03.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Kurze Anmerkung noch zu dem was Gott_in_schwarz gesagt hat:

    Statt "$@" würde in diesem Falle auch "$*" gehen, siehe

    Code:
    man bash
     
  6. #5 Gott_in_schwarz, 07.03.2008
    Zuletzt bearbeitet: 07.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    erm, nein. das würde nicht gehen.
    also entweder $@, "$@" oder $*, aber nicht "$*". sonst hat die for schleife genau einen durchgang..



    [edit]: wobei "$@" den anderen ($@ und $*) vorzuziehen ist, weil man damit auch über parameter mit leerzeichen iterieren kann:
    Code:
    ./params.bash bla blub "foo bar"
    gibt nur im falle von "$@" bei einer for-schleife
    Code:
    bla
    blub
    foo bar
    aus. die anderen varianten geben alle:
    Code:
    bla
    blub
    foo
    bar
    aus. (für die for-schleife siehe mein erstes post)
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 supersucker, 07.03.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ähem....

    mit "$*" meinte ich

    Code:
    $*
    die "" waren nur zur Abgrenzung.

    Das war in dieser Situation dann aber wirklich mißverständlich...........:devil:
     
  9. #7 Wolfgang, 07.03.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Naja, hier ging es doch um etwas Anderes.
    In diesem Kontext ist das bereits genannte geeigneter.
    Code:
    #!/bin/bash
    for parameter in "$@"; do
        echo $parameter
    done
    Wolfgang
     
Thema: Übergabeparameter
Besucher kamen mit folgenden Suchen
  1. bash parameter übergeben

    ,
  2. bash übergabeparameter

Die Seite wird geladen...

Übergabeparameter - Ähnliche Themen

  1. Bestimmten Übergabeparameter lesen

    Bestimmten Übergabeparameter lesen: Hallo, über folgende for-Schleife möchte ich den auf Parameter "-s" folgenden nächsten Parameter lesen. Also: script.sh ... -s tataaa ... führt...