On Tuesday, Oct 10th 2006 at 13:26 -0600, quoth Kim Lux: =>On Tue, 2006-10-10 at 18:20 +0100, Paul Howarth wrote: => =>> > How do I get $1 to be * rather than just a specific file ? =>> =>> You can't. The shell that you are running is what is expanding the "*", =>> not the script. =>> =>> Try changing the script not to use $1 instead: =>> =>> ======================================= =>> echo =>> echo Arguments are "$@" =>> =>> for eachFile in "$@" =>> do =>> ... =>> done =>> ======================================= => =>Using $@ works perfectly. echo "$@" returns a list of files in the =>directory when called with myscript * => =>THANKS ! I think fuzyok doesn't like you. :-) There's a difference between $*, $@ and "$@". You need to read the bash man page about 50 times. It's all there. If you do globbing on the commandline (like you should) then you have a couple of ways to write your script. One way is to process all of the arguments in the commandline like you did above for ii in "$@" Another way is to have a loop that always refers to $1 and to call shift after processing an argument while [[ -n "$1" ]] do dosomething $1 shift done And, you can get $1 to be * (if you really really want to). I suspect you don't. Just run your program with the * in single quotes to prevent expansion.