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.
Related resources:
- Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!
-
Installation
-
Usage
-
Integrating and extending
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.
<--- This is a global footer, please don't edit it. --->