On Tuesday 20 May 2008 02:41, RW wrote: > On Mon, 19 May 2008 21:46:03 +1200 > > Jonathan Chen <[EMAIL PROTECTED]> wrote: > > On Mon, May 19, 2008 at 01:49:35AM -0700, Garrett Cooper wrote: > > > Riddle for the day for folks that have source trees... what would > > > you expect this to print out (ask yourself the question and then > > > execute the command)? > > > > > > find /usr/src -name Makefile -or -name '*.mk' -print > > > > > > The expected output and what actual output differed in my mind, but > > > maybe somebody else can "shed some light" on the logic behind what > > > happened > > > > It's a problem that catches many young players with find(1). One has > > to remember from reading the man-page that all directives have an > > implicit AND operator on it; and that includes the "-print" directive. > > So to get what you want, you have to introduce brackets: > > > > find /usr/src \( -name Makefile -or -name '*.mk' \) -print > > Why does that make a difference, when print always evaluates to true? > > x AND true = x > > so > > (a OR b) AND true = a OR b > a OR (b AND true) = a OR b
It makes a difference (as in programming) because -print is used for its side-effect rather than its value, and the binding order influences when the side-effect happens. Jonathan _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"