Übergabeparameter

Diskutiere Übergabeparameter im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo zusammen, wenn ich Übergabeparameter an eine Anweisen habe kann ich diese ja mittels $1 usw. anzeigen und damit weiterarbeiten. wenn...

  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. #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
     
  3. #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---
     
  4. #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
     
  5. #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)
     
  6. #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:
     
  7. #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. linux bash übergabeparameter

    ,
  2. bash parameter übergeben

    ,
  3. 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...