Bash 如何将除法存储到变量
Bash how to store a division to a variable
我正在尝试计算以下公式并将值存储到变量中。
伪代码应该如下所示:
a=10
b=5
c=$(((($a-$b)/52)) | bc -l)
echo $c
结果为空。我无法弄清楚使用 bc
的语法。请帮助我使用 bc
而不是 awk
或其他方法。
你可以使用这个:
a=10
b=5
c=$(bc -l <<< "($a-$b)/52")
echo "$c"
.09615384615384615384
或者通过设置比例 3
:
c=$(bc -l <<< "scale=3; ($a-$b)/52")
echo "$c"
.096
您需要注意 两 件事。第一个是 bc
对表达式使用标准输入,因此您实际上需要 pipe 您的表达式,或使用 <<<
重定向运算符,其中之一:
c=$(echo "($a - $b) / 52" | bc)
c=$(bc <<< "($a - $b) / 52")
<<<
方法特定于 bash
和 ksh
(可能 其他方法,但我不是很熟悉他们)。另一种方法可以在大多数shell中使用。
其次,在为此使用大数字时要小心,因为 bc
有将它们拆分成多行的烦人习惯:
pax$ x=999999999999999999999999999999999999999999999999999999999999999999999
pax$ echo "$x / 7" | bc
14285714285714285714285714285714285714285714285714285714285714285714\
2
为了避免这种情况,您需要更改行长:
pax$ echo "$x / 7" | BC_LINE_LENGTH=0 bc
142857142857142857142857142857142857142857142857142857142857142857142
我正在尝试计算以下公式并将值存储到变量中。
伪代码应该如下所示:
a=10
b=5
c=$(((($a-$b)/52)) | bc -l)
echo $c
结果为空。我无法弄清楚使用 bc
的语法。请帮助我使用 bc
而不是 awk
或其他方法。
你可以使用这个:
a=10
b=5
c=$(bc -l <<< "($a-$b)/52")
echo "$c"
.09615384615384615384
或者通过设置比例 3
:
c=$(bc -l <<< "scale=3; ($a-$b)/52")
echo "$c"
.096
您需要注意 两 件事。第一个是 bc
对表达式使用标准输入,因此您实际上需要 pipe 您的表达式,或使用 <<<
重定向运算符,其中之一:
c=$(echo "($a - $b) / 52" | bc)
c=$(bc <<< "($a - $b) / 52")
<<<
方法特定于 bash
和 ksh
(可能 其他方法,但我不是很熟悉他们)。另一种方法可以在大多数shell中使用。
其次,在为此使用大数字时要小心,因为 bc
有将它们拆分成多行的烦人习惯:
pax$ x=999999999999999999999999999999999999999999999999999999999999999999999
pax$ echo "$x / 7" | bc
14285714285714285714285714285714285714285714285714285714285714285714\
2
为了避免这种情况,您需要更改行长:
pax$ echo "$x / 7" | BC_LINE_LENGTH=0 bc
142857142857142857142857142857142857142857142857142857142857142857142