On Wed Nov 23 13:07:32 PST 2005, Mac Daddy <macdaddee at gmail.com> wrote: > > I have a script running on several macs, a small part of which fails. > > ---------------------------------- snippet > f# Add Admin users first. > > foreach login ( `cat ./logins_Y.txt` ) > dscl . merge /groups/cq users "$login"@<mydomain.com> > end > > # Add normal Users next > > foreach login ( `cat ./logins_A.txt` ) > dscl . merge /groups/cq users "$login"@<mydomain.com> > end > -------------------------- end snippet > This is how I would it in Bourne shell: # # if you don't specify the path, the shell assumes your current # working directory. it might explain why the script ran by # hand but not in a cron job, as the current working directory # may not be the same between your login environment and the # cron job environment. also, avoid using the '.' path in your # shell scripts and stick with absolute paths. # loginidsfile="/path/to/logins_A.txt" for loginid in $(cat "${loginidsfile}") do # # i prefer to quote all parameters that are subject to # variable substitution. also, '<' and '>' characters # are just too close to being redirection pipes for my # tastes. # dscl . merge /groups/cq users "${loginid}@<mydomain.com>" done You could then put this in a shell script function. Instead of writing the same code twice, you simply pass different login files to the same function. That is left as an exercise to the gentle reader... -- Eugene http://www.coxar.pwp.blueyonder.co.uk/