mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Updated SC2213 (markdown)
24
SC2213.md
24
SC2213.md
@@ -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.
|
Reference in New Issue
Block a user