OT: shell scripting problem
kevin.kempter at dataintellect.com
kevin.kempter at dataintellect.com
Tue May 17 23:00:02 UTC 2005
On Tuesday 17 May 2005 16:55, linux.whiz at gmail.com wrote:
> My brain is fried. I know there is a simple answer to this but I'm
> drawing a blank. I want to run a script against the contents of a
> text file. The text file is just my users' first name, middle initial
> and last name like this:
>
> John A Smith
> Mary P James
> Sally R Jones
> Fred Q Davis
>
> What I want to do is for each user in this file, run a script. I
> tried to do this:
>
> for i in `cat textfile`; do
> myscript.sh $i
> done
>
> I expect this to run like this:
>
> myscript.sh John A Smith
> myscript.sh Mary P James
> myscript.sh Sally R Jones
> myscript.sh Fred Q Davis
>
> Instead it runs like this:
>
> myscript.sh John
> myscript.sh A
> myscript.sh Smith
> ...
> etc.
>
> How do I get this script to run correctly?
>
> Thanks!
> LW
You get this behavior because the internal field separator by default
recognizes spaces, tebs, etc as field separators.
Try this instead (where names.lst is your file of names):
exec < ./names.lst
while read line
do
myscript.sh $line
done
More information about the fedora-list
mailing list