how to code a timer loop in a sh script

Polytropon freebsd at edvax.de
Wed Nov 8 12:57:11 UTC 2017


On Wed, 8 Nov 2017 08:25:55 +0100 (CET), Trond Endrestøl wrote:
> On Mon, 6 Nov 2017 19:24+0100, Michael Schuster wrote:
> 
> > while [ 1 ]; do
> >     do_stuff
> >     sleep 600
> > done
> 
> This should be even better:
> 
> while true; do
>     do_stuff
>     sleep 600
> done

Yes.

While /usr/bin/true always evaluates to true (as desired),
"test 1" depends on if it's an internal or external command
which depends on the shell, and if the implementation conforms
to the standard. In this specific case, 1 would be seen as "1",
a non-empty string, and therefore should cause test to return 0,
as a non-empty string evaluates to true.

>From "man test":

     string        True if string is not the null string.

As the 1 is the only expression tested, this rule applies.
No math included. ;-)




-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...


More information about the freebsd-questions mailing list