我一直在做这样的整数计算。
a=12
b=23
c=$((a-b))
echo $c
但是,现在对于浮点数来说它失败了,我读到我们可以使用 bc 来做到这一点,但是我想在最后将结果分配给变量。
a=12.7
b=23.33
c=$((a-b)) | bc
echo $c
答案1
c=$( printf '%s - %s\n' "$a" "$b" | bc )
或者,对于懒人来说,
c=$( echo "$a - $b" | bc )
或者,对于懒惰的bash
用户,
c=$( bc <<<"$a - $b" )
您的代码的问题是
c=$((a-b)) | bc
行不通的。您只能(有用地)对产生输出的内容进行管道传输,并且1) 如果或是浮点数(有语法错误),则c=$((a-b))
分配将失败,并且 2) 不产生输出。此外,(nothing) 的输出不会被分配,因为它根本不是分配的一部分。$a
$b
bc
c