On Thu, Sep 15, 2005 at 09:52:14PM +0200, Jean Delvare wrote:
> $ time true | sleep 1
> 
> real    0m1.012s
> user    0m0.004s
> sys     0m0.004s
> 
> $ (time true) | sleep 1
> 
> real    0m0.007s
> user    0m0.004s
> sys     0m0.004s
> 
> I guess the left-hand side of the pipe needs to wait for the right-hand
> side of the pipe to exit before it can exit itself, in order to get the
> return code or something alike.

Bear in mind that "time" is a reserved word in bash and is considered
part of the basic pipeline grammar.  It's applied to its entire
pipeline, not just the first command.  From the bash "Pipelines" info
node:

   The format for a pipeline is
     [`time' [`-p']] [`!'] COMMAND1 [`|' COMMAND2 ...]

You can see the difference if you force the shell to use the non-builtin
time program instead:

  $ /usr/bin/time true | sleep 1
  0.00user 0.00system 0:00.01elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
  0inputs+0outputs (102major+9minor)pagefaults 0swaps

  $ (/usr/bin/time true) | sleep 1
  0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
  0inputs+0outputs (102major+9minor)pagefaults 0swaps

And the word "time" behaves as a normal command if you place it in the
middle of the pipeline:

  $ true | time true | sleep 1
  0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
  0inputs+0outputs (102major+9minor)pagefaults 0swaps

> $ time (true | sleep 1)
> 
> returns only after the 1 second sleep, but doesn't print anything. I
> have no idea why.

This happens for anything using parentheses grouping:

  $ time (true)

Perhaps it's a bug in the bash parser.  I notice that it does work as
expected for brace grouping:

  $ time { true | sleep 1; }

  real  0m0.000s
  user  0m0.000s
  sys   0m0.000s

Also of note:

  $ time true && sleep 1

  real  0m0.000s
  user  0m0.000s
  sys   0m0.000s
                                                  -Dave Dodge


_______________________________________________
Quilt-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/quilt-dev

Reply via email to