/bin/sh Madness
Dan Nelson
dnelson at allantgroup.com
Fri Feb 17 15:56:29 PST 2006
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 at allantgroup.com
More information about the freebsd-questions
mailing list