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