Shell – How to check for “delta” argument like “+10”

argumentsshell-script

I want to pass a numeric value to a bash script, which could be either an absolute integer value (0-100) or a relative "delta" like "+10" or "-50".

How would I parse $1 to check for + or - and grab the remaining text as a value?

Best Answer

Base on @frams's idea, we can make the answer shorter:

sign=${1//[[:digit:]]}
value=${1//[^[:digit:]]}

${1//[[:digit:]]} deletes digit part of ${1}

${1//[^[:digit:]]} deletes non-digit part of ${1}

ref: Advanced Bash Scripting Guide by Mendel Cooper

Related Question