SC2177 – ShellCheck Wiki

See this page on GitHub


time is undefined for compound commands, use time sh -c instead.

Problematic code:

time for i in *.bmp; do convert "$i" "$i.png"; done

Correct code:

time sh -c 'for i in *.bmp; do convert "$i" "$i.png"; done'


time is only defined for Simple Commands by POSIX. Timing loops, command groups and similar is not.


None. If you use a shell that supports this (e.g. bash, ksh), specify this shell in the shebang.

ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.