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?
15 Answers
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
3If you want to do it without bc, you could use awk:
$ awk -v var1=3 -v var2=4 'BEGIN { print ( var1 / var2 ) }' 0.75 1There 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.
#!/bin/bash var1=10 var2=5 echo $((var1/var2)) 1You can also use Python for this task.
Type python -c "print( $var1 / float($var2) )"