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