Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Feb 2006 17:56:27 -0600
From:      Dan Nelson <dnelson@allantgroup.com>
To:        Tim Daneliuk <tundra@tundraware.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: /bin/sh Madness
Message-ID:  <20060217235627.GF52817@dan.emsphone.com>
In-Reply-To: <43F65EC4.8000703@tundraware.com>
References:  <43F50074.8060205@tundraware.com> <20060217011923.GA87403@dan.emsphone.com> <43F65EC4.8000703@tundraware.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In the last episode (Feb 17), Tim Daneliuk said:
> Dan Nelson wrote:
> >Could your $3 command be returning a nonzero exit code?  You probably
> >want something more like
> >
> >touch $2/.$1-begin && { eval $3 2>&1 >> $log ; touch $2/.$1-end } &
> >
> >so your end timestamp always gets created whether or not $3 succeeds.
> >Also note that in your original script, you only backgrounded "touch
> >$2/.$1-end", which is probably not what you wanted.
> 
> This seems not to work - I don't think 'sh' likes nested function
> braces - recall that this command appears inside a shell function.

Oops.  Braces aren't bourne syntax, and in this case they're the wrong
choice anyway.  parens (i.e. a subshell) are what's needed.

touch $2/.$1-begin && ( eval $3 2>&1 >> $log ; touch $2/.$1-end ) &

I actually tested this one :)
 
> In any case, I think I have nailed the problem.  It seems that the
> external script being called made reference to 'chown' without explicitly
> naming the program's path.  Under 'cron' control, there is no path to
> /usr/sbin by default so the script was exiting with a non-zero exit
> status as several here suggested.  <Wipes large glob off egg off very
> red face>.
> 
> Many thanks to all who took time to answer.

-- 
	Dan Nelson
	dnelson@allantgroup.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060217235627.GF52817>