web-dev-qa-db-ja.com

bashで2つの変数を除算する

私は2つの変数をbashに分割しようとしています、これは私が持っているものです:

var1=3;
var2=4;

echo ($var1/$var2)

常に構文エラーが発生します。誰が間違っているか知っていますか?

11

シェル解析は、整数除算の場合にのみ役立ちます。

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

出力:2

代わりにあなたの例:

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

出力:0

bcを使用することをお勧めします。

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

出力:.75

scaleは必要な精度です

28
m47730

ここには2つの可能な答えがあります。

整数除算を実行するには、シェルを使用できます。

_$ echo $(( var1 / var2 ))
0
_

$(( ... ))構文は、算術展開として知られています。

浮動小数点除算の場合、bcなどの別のツールを使用する必要があります。

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

_scale=2_ステートメントは、出力の精度を小数点以下2桁に設定します。

8
Tom Fenech

bcなしを実行する場合は、awkを使用できます。

$ awk -v var1=3 -v var2=4 'BEGIN { print  ( var1 / var2 ) }'
0.75
3
rouble
#!/bin/bash
var1=10
var2=5
echo $((var1/var2))
0