OT: shell scripting problem

linux.whiz at gmail.com linux.whiz at gmail.com
Tue May 17 23:33:30 UTC 2005


On 5/17/05, kevin.kempter at dataintellect.com
<kevin.kempter at dataintellect.com> wrote:
> 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

As soon as I issue the exec < ./names.lst command, my shell exits.  My
understanding is that exec takes over the PID of the current process,
so when you try to exec a text file it makes sense that the process
would exit.

Other ideas?




More information about the users mailing list