BASH + Best method of converting fields to variables

Charles Heselton charles.heselton at gmail.com
Sat Jul 17 20:10:00 UTC 2004


Write it in perl.  ;)

On Sat, 17 Jul 2004 13:03:44 -0700, Ow Mun Heng <ow.mun.heng at wdc.com> wrote:
> On Sat, 2004-07-17 at 05:43, Karsten Hopp wrote:
> > On Fri, Jul 16, 2004 at 10:29:38PM -0400, Aaron Gaudio wrote:
> > > Behold, Ow Mun Heng <Ow.Mun.Heng at wdc.com> hath decreed:
> > > > Guys,
> > > >
> > > >   Writing a batch_create_new_user script.
> > > > input is a file with this format
> > > >
> > > > Username:Full Name:Default Group:Default Shell:Home Directory:Password
> > > >
> > > > and the using those fields ($1 $2 $3 etc) and passing then to the useradd program
> > > >
> > > > I'm having some trouble getting bash to get the positional fields into variables which I
> > > > can then plug into useradd
> > > >
> > > > eg:
> > > > pseudo code
> > > > for each line in input file
> > > >   do
> > > >   username=$1
> > > >   name=$2
> > > >   useradd -c "$2" $1
> > > >   done
> > > >
> > > > I ended up using awk, which works but seems complicated
> > > >
> > > >   eval `awk -F ':' \
> > > >         '{printf ("useradd -c \"%s\" ",$2)}; \
> > > >         length($3)>0 {printf ("-g %s ",$3)}; \
> > > >         length($4)>0 {printf ("-s %s ",$4)}; \
> > > >         length($5)>0 {printf ("-d %s ",$5)}; \
> > > >         {printf ("%s\n;",$1)};' $1`
> > > >
> > > > Can it be done using bash itself? (without calling awk)
> > > > Actually I was hoping I can get awk to get the fields for the variables
> > >
> >
> > How about using the IFS variable for this ?
> > set IFS to ':' and run a for...done loop over each line of the input file.
> 
> I'm not sure how that can be used.
> 
> One other thing which I found is that by using awk, I'm actually
> processing the file all at once. (as the awk code above shows). I'm not
> sure how I can get BASH to actually process it line-per-line like tcsh's
> foreach.
> 
> Maybe I can learn up on using awk's $NR variable, to get it to
> auto-increment so that I read it line-by-line and process it that way.
> 
> Right now, my random password generator function is making the _same_
> default password for _all_ users. That's Not too great.
> 
> Dang.. the more I write, the more complicated I'm making it.
> 
> Thanks for the help
> 
> >
> > --
> >  Karsten Hopp <karsten at redhat.de>   GPG 1024D/70ABD02C
> >  Fingerprint D2D4 3B6B 2DE4 464C A432 210A DFF8 A140 70AB D02C
> >  Red Hat Deutschland, Hauptstaetter Str.58
> >  70178 Stuttgart, Tel.+49-711-96437-0, Fax +49-711-96437-111
> 
> --
> Ow Mun Heng
> Fedora GNU/Linux Core 2 on D600 1.4Ghz CPU kernel
> 2.6.7-2.jul1-interactive
> Neuromancer 12:57:04 up 14:59, 7 users, load average: 0.61, 0.97, 0.83
> 
> 
> --
> fedora-list mailing list
> fedora-list at redhat.com
> To unsubscribe: http://www.redhat.com/mailman/listinfo/fedora-list
> 


-- 
Charlie Heselton
Network Security Engineer





More information about the fedora-list mailing list