Updated SC2213 (markdown)

Vidar Holen
2021-10-09 11:49:23 -07:00
parent 8f9e8840f7
commit a1c06a3938

@@ -34,4 +34,26 @@ Either add a case to handle the flag, or remove it from the `getopts` option str
### Exceptions: ### Exceptions:
None. ShellCheck may not correctly recognize less canonical uses of `while getopts ..; do case ..;`, such as when modifying the variable before using it:
```
while getopts "rf-:" OPT; do
if [ "$OPT" = "-" ]; then # long option: reformulate OPT and OPTARG
OPT="${OPTARG%%=*}" # extract long option name
OPTARG="${OPTARG#$OPT}" # extract long option argument (may be empty)
OPTARG="${OPTARG#=}" # if long option argument, remove assigning `=`
fi
case "$OPT" in
r) ... ;;
f) ... ;;
my-long-option) ... ;;
esac
done
```
In such cases you can do one of:
* [[Ignore]] the warning.
* Use the external tool `getopt` (no "s") which supports long options natively.
* Rewrite to not modify the variable first, in this case by instead doing it in a `-)` branch.