Fix array expansion errors on unknown parameter names
When unexpected parameters are passed to cmdarg, the shell (bash 5.1.8) spits out some error messages about bad array subscripts, for example > cmdarg.sh: line 333: CMDARG_FLAGS: bad array subscript > cmdarg.sh: line 334: CMDARG_FLAGS: bad array subscript > cmdarg.sh: line 340: CMDARG: bad array subscript This occurs because the array is being indexed by a null value, so to prevent it we must guard all such uses with a check.
This commit is contained in:
@@ -326,7 +326,7 @@ function cmdarg_parse
|
|||||||
${CMDARG_ERROR_BEHAVIOR} 1
|
${CMDARG_ERROR_BEHAVIOR} 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $is_equals_arg -eq 1 ]]; then
|
if [[ $is_equals_arg -eq 1 && -n "$opt" ]]; then
|
||||||
if [[ ${CMDARG_FLAGS[$opt]} -eq ${CMDARG_FLAG_REQARG} ]] || \
|
if [[ ${CMDARG_FLAGS[$opt]} -eq ${CMDARG_FLAG_REQARG} ]] || \
|
||||||
[[ ${CMDARG_FLAGS[$opt]} -eq ${CMDARG_FLAG_OPTARG} ]]; then
|
[[ ${CMDARG_FLAGS[$opt]} -eq ${CMDARG_FLAG_OPTARG} ]]; then
|
||||||
optarg=$1
|
optarg=$1
|
||||||
@@ -334,7 +334,7 @@ function cmdarg_parse
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${CMDARG["${opt}"]+abc} ]; then
|
if [ -n "$opt" ] && [ ${CMDARG["${opt}"]+abc} ]; then
|
||||||
cmdarg_set_opt "${CMDARG[$opt]}" "$optarg"
|
cmdarg_set_opt "${CMDARG[$opt]}" "$optarg"
|
||||||
local rc=$?
|
local rc=$?
|
||||||
failed=$((failed + $rc))
|
failed=$((failed + $rc))
|
||||||
|
|||||||
Reference in New Issue
Block a user