From: dyoung@redhat.com Date: Thu, 17 Jan 2013 08:55:50 +0000 (+0800) Subject: add function getargnum X-Git-Tag: 025~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a08ea34aba543bb52995c51463d82caa30f0941a;p=thirdparty%2Fdracut.git add function getargnum For cmdline argument with numeric value, add a new function getargnum It will get proper value with default value as $1, min value as $2, max value as $3, and param name as $4. valid result will be echo to stdout. for nul or value not valid it will just echo the default value. Note: The values should be >=0 [v1->v2]: add arg [v2->v3]: do not use bash string match =~ Signed-off-by: Dave Young --- diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh index 15f13c3e4..da37ac4ad 100755 --- a/modules.d/99base/dracut-lib.sh +++ b/modules.d/99base/dracut-lib.sh @@ -181,6 +181,35 @@ getargbool() { return 0 } +isdigit() { + case "$1" in + *[!0-9]*|"") return 1;; + esac + + return 0 +} + +# getargnum +# Will echo the arg if it's in range [minval - maxval]. +# If it's not set or it's not valid, will set it . +# Note all values are required to be >= 0 here. +# should be with [minval -maxval]. +getargnum() { + local _b + unset _b + local _default _min _max + _default=$1; shift + _min=$1; shift + _max=$1; shift + _b=$(getarg "$1") + [ $? -ne 0 -a -z "$_b" ] && _b=$_default + if [ -n "$_b" ]; then + isdigit "$_b" && _b=$(($_b)) && \ + [ $_b -ge $_min ] && [ $_b -le $_max ] && echo $_b && return + fi + echo $_default +} + _dogetargs() { debug_off local _o _found _key