Divide two variables in bash

2019-01-15 09:26发布

问题:

I am trying to divide two var in bash, this is what I've got:

var1=3;
var2=4;

echo ($var1/$var2)

I always get a syntax error. Does anyone knows what's wrong?

回答1:

shell parsing is useful only for integer division:

var1=8
var2=4
echo $((var1 / var2))

output: 2

instead your example:

var1=3
var2=4
echo $((var1 / var2))

ouput: 0

it's better to use bc:

echo "scale=2 ; $var1 / $var2" | bc

output: .75

scale is the precision required



回答2:

There are two possible answers here.

To perform integer division, you can use the shell:

$ echo $(( var1 / var2 ))
0

The $(( ... )) syntax is known as an arithmetic expansion.

For floating point division, you need to use another tool, such as bc:

$ bc <<<"scale=2; $var1 / $var2"
.75

The scale=2 statement sets the precision of the output to 2 decimal places.



回答3:

If you want to do it without bc, you could use awk:

$ awk -v var1=3 -v var2=4 'BEGIN { print  ( var1 / var2 ) }'
0.75


回答4:

#!/bin/bash
var1=10
var2=5
echo $((var1/var2))