Skip to content
Vidar Holen edited this page Jul 26, 2018 · 2 revisions

'time' is undefined for pipelines. time single stage or bash -c instead.

Problematic code:

time foo | bar

Correct code:

To time the most relevant stage:

foo | { time bar; }

To time everything in a pipeline:

time bash -c 'foo | bar'

Note that you can not use time sh -c to time an entire pipeline, because POSIX does not guarantee that anything other than the last stage is waited upon by the shell.

Rationale:

This behavior is explicitly left undefined in POSIX.

Exceptions:

None. This warning is not emitted in ksh or bash where time is defined for pipelines.

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally
You can’t perform that action at this time.