Command line parameter problem in scripts ?

Paul Howarth paul at city-fan.org
Tue Oct 10 17:20:49 UTC 2006


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.




More information about the users mailing list