Created SC3047 (markdown)

Vidar Holen
2020-09-01 18:11:01 -07:00
parent ea4ead2bab
commit e9da80228a

39
SC3047.md Normal file

@@ -0,0 +1,39 @@
## In POSIX sh, trapping ERR is undefined.
(or "In dash, ... is not supported." when using `dash`)
Also applies to RETURN and DEBUG.
### Problematic code:
```sh
#!/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:
```sh
#!/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!