Numbers and Arithmetic in bash: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 5: Line 5:
=How to Tell if a Variable has an Integer Value=
=How to Tell if a Variable has an Integer Value=


<pre>
<syntaxhighlight lang='bash'>
v=10
v=10


Line 17: Line 17:
     #
     #
fi
fi
</pre>
</syntaxhighlight>


More details: {{Internal|expr|expr}}
More details: {{Internal|expr|expr}}

Revision as of 19:28, 5 May 2020

Internal

How to Tell if a Variable has an Integer Value

v=10

if expr ${v} + 1 >/dev/null 2>&1; then
    #
    # the value contained by v is an integer
    #
else
    #
    # the value contained by v is NOT an integer
    #
fi

More details:

expr

Integral Number Operations

$((...))

op1=4
op2=2
echo $((op1 + op2))
echo $((op1 - op2))
echo $((op1 * op2)) 
echo $((op1 / op2)) # integral division

displays:

6
2
8
2

expr

expr

bc

local t0="$(date -u +%s)"
local t1="$(date -u +%s)"
local delta="$(bc <<<"${t1}-${t0}")"

Floating Point Operations

Multiplication:

local operand1=10.1
local operand2=20.2

result=$(echo ${operand1} ${operand2} | awk '{printf "%5.1f\n",$1*$2}') || exit 1

Division:

local operand1=10.1
local operand2=20.2

result=$(echo ${operand1} ${operand2} | awk '{printf "%5.1f\n",$1/$2}') || exit 1

Increment an Integer

Increment an Integer with ((...)) Operator

Decrement an Integer

Decrement an Integer with ((...)) Operator

Numeric Evaluation in a Condition

a=1
b=2
if [[ $(expr ${a} - ${b}) < 0 ]]; then
  ...
fi

Random Numbers

Bash script that generates a random MAC address