On Tuesday, Oct 10th 2006 at 18:20 +0100, quoth Paul Howarth: =>Kim Lux wrote: =>> I am writing a script to process some files. =>> =>> Lets say the name of the script is myscript. I want to use it like =>> 'myscript file1' sometimes and 'myscript *" other times, to process all =>> the files in the directory with one command. =>> =>> So in myscript, I have this: =>> =>> ======================================= =>> echo =>> echo Argument 1 is $1. =>> =>> for eachFile in `ls $1` =>> do =>> ... =>> done =>> ======================================= =>> =>> The problem is that when I call myscript with 'myscript *", argument 1 =>> ($1) is file1, not * as I expect it to be. Thus the script processes =>> the first file and then stops. (file1 is the first file in the =>> directory.) =>> 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 =>======================================= => =>Paul. That could be a loss of functionality for what kim might have intended. If the intent was to specify that the globbing needs to happen in the script then for eachFile in $1 do ... done would do it but the invocation would require single quotes.