On 2026-04-17, Harald Dunkel <[email protected]> wrote: > Jeremy Mates wrote: >> On 2026-04-16 06:21:17 +0200, Harald Dunkel wrote: >>> gate5b# x=$(rcctl ls failed) || rcctl restart $x >>> smtpd(ok) >>> gate5b# rcctl ls failed >>> gate5b# echo $? >>> 0 >>> >>> This is confusing. Imagine grep would exit 1 if it has found >>> something. >> >> grep uses inverse logic (positive match) to `rcctl ls failed` (negative >> match) so may not be the best analogy. One may want to do something like >> >> rcctl ls failed || mail ... >> >> to notify from a script but only when there is something to do, that is, >> when there is a failed service and therefore a non-zero exit status word >> to indicate that. >> > > This is bad code. IMHO > > rcctl ls failed && echo 'service is not running' > > should work similar to > > rcctl ls failed | grep -q smtpd && echo 'smtpd is not running' > > but it doesn't. I understand that the exit value of "rcctl ls failed" > is inverted to grep; thats the problem.
It's been like this for 10+ years, too late to change it now (and I don't recall anyone else asking to change it). -- Please keep replies on the mailing list.

