SC3064 – ShellCheck Wiki

See this page on GitHub

Sitemap


In POSIX sh, test -N is undefined.

Problematic code:

if [ -N file ]
then
  echo "File has been modified since last read"
fi

Correct code:

if bash -c '[ -N file ]'
then
  echo "File has been modified since last read"
fi

Rationale:

test -N is not supported by POSIX, and there is no straight forward way of simulating it. If you need this functionality, look into which non-POSIX features your system has to allow this. stat -c, find -printf, bash, ksh, and Python are all possible options.

Note that atime did not turn out to be as useful as first imagined in 1970, and it's generally better not to rely on it.

Exceptions:

None. If you expect your shell to support test -N, either explicitly specify it in the shebang, use a # shellcheck shell=bash directive, or ignore this warning.


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