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

5 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

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 
1

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.

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

You can also use Python for this task.
Type python -c "print( $var1 / float($var2) )"

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy