In POSIX sh, trapping ERR is undefined.
(or "In dash, ... is not supported." when using dash
)
Also applies to RETURN and DEBUG.
Problematic code:
#!/bin/sh
trap 'Command failed with $?' ERR
Correct code:
Switch to a shell like ksh
or bash
that does support the kind of trap you want:
#!/bin/bash
trap 'Command failed with $?' ERR
Otherwise, rewrite the script to not rely on the trap.
Rationale:
You are trying to install a trap that is not supported by your current shell (dash
or POSIX sh
). There is no simple replacement. The script should be rewritten to avoid depending on the trap, or simply be run with a shell that supports it.
Exceptions:
If you only intend to target shells that supports this feature, you can change the shebang to a shell that guarantees support, or ignore this warning.
You can use # shellcheck disable=SC3000-SC4000
to ignore all such compatibility
warnings.
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.