Stephan Wezorke <swezo...@rbg.informatik.tu-darmstadt.de> writes:

> Am Montag 11 Mai 2009 11:45:02 schrieb Jochen Hein:
>> Stephan Wezorke <swezo...@rbg.informatik.tu-darmstadt.de> writes:
>> > Hier noch mal ein Beispiel zur Verdeutlichung:
>> > #!/bin/bash
>> > list() {
>> >    echo $#                 # Gibt 0 aus, auch wenn man Parameter übergibt
>> >    while [ $# -gt 0 ]
>> >    do
>> >            echo $1         # Wird entsprechend erst garnicht aufgerufen.
>> >    done
>> > }
>> > list;
>>
>> Da solltest Du "list $*" machen.  Oder halt die Parameter, die Du
>> brauchst.  Oder?
>
> Falls ich die Variablen nur ausgeben würde hättest du Recht. Das sollte hier 
> nur ein Beispiel sein, eigentlich mache ich so ein paar Sachen in der 
> Funktion.

Ja, aber woher soll denn die Funktion wissen, welche Werte sie
bearbeiten soll?  Das ist ja vollkommen unabhängig davon, was in der
Schleife passieren soll.

Hm, bei mir macht der "echo $#" genau das, was man erwartet - bei 
list 1 2 3;:

[23:23:04]:echidna:(pts/3):~/scripts$ bash funtest.sh
+ list 1 2 3
+ echo 3
3

Wenn ich list $* verwende, und mein Skript mit Parametern aufrufe, dann
ist es auch ok.  Hier mein Testscript:

#!/bin/bash
set -x
list() {
        echo $#                 # Gibt 0 aus, auch wenn man Parameter übergibt
        while [ $# -gt 0 ]
        do
                echo $1         # Wird entsprechend erst garnicht aufgerufen.
                shift
        done
}
list 1 2 3; # oder list $*


Wenn ich in der Funktion eine Variable setze, dann kommt es auch im
Hauptprogramm an:

#!/bin/bash
set -x
a=1
list() {
        echo $#                 # Gibt 0 aus, auch wenn man Parameter übergibt
        while [ $# -gt 0 ]
        do
                echo $1         # Wird entsprechend erst garnicht aufgerufen.
                shift
        done
        echo $a
        a=2
}
list $*;
echo $a

Ich glaube, ich habe Dein Problem noch nicht verstanden.

Jochen

-- 
The only problem with troubleshooting is that the trouble shoots back.
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an