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 fedora-list
mailing list