diff --git a/README.md b/README.md index 0e1536f..151c3f4 100644 --- a/README.md +++ b/README.md @@ -198,6 +198,11 @@ Similarly, cmdarg understands '--' which means "stop processing arguments, the r ... Cmdarg would parse -x and --longopt as expected, and then ${cmdarg_argv[0]} would hold "--some-thing-with-dashes", for your program to do with what it will. +getopt vs getopts +================= + +cmdarg does not use getopt or getopts for option parsing. Its parser is written in 100% pure bash, and is self contained in cmdarg_parse. It will run the same way anywhere you have bash4. + Tests ===== diff --git a/cmdarg.sh b/cmdarg.sh index dd08685..facb41c 100644 --- a/cmdarg.sh +++ b/cmdarg.sh @@ -243,6 +243,9 @@ function cmdarg_parse elif [[ "${fullopt:0:1}" == "-" ]] && [[ ${#fullopt} -eq 2 ]]; then opt=${fullopt:1} longopt=${CMDARG[$opt]} + elif [[ "${fullopt:0:1}" != "-" ]]; then + cmdarg_argv+=("$fullopt") + continue else echo "Malformed argument: ${fullopt}" >&2 echo "While parsing: $@" >&2