我有一个使用浮点值的脚本,但有些我无法减去两个浮点数。
这是示例代码
#!/bin/bash
p="1"
h="10"
m=$(echo "3.5"| bc -l)
for (( c=$p; c<=$h; c++ ))
do
r=$(echo "($p-$m)"| bc -l)
echo "Z $c $m $r"
done
这是结果
Z 1 3.5 -2.5
Z 2 3.5 -2.5
Z 3 3.5 -2.5
Z 4 3.5 -2.5
Z 5 3.5 -2.5
Z 6 3.5 -2.5
Z 7 3.5 -2.5
Z 8 3.5 -2.5
Z 9 3.5 -2.5
Z 10 3.5 -2.5
换线
至
因为它不是,
$p
但$c
它被循环改变了。bash
不支持浮点运算。ksh
并zsh
做。POSIXLy,您可以bc
按照Florian 的回答建议使用,或者awk
. 例如,Ubuntu 还附带
Python
并且Perl
能够执行浮点计算。另请参阅其他选项的非常广泛的列表:How to do integer & float calculations, in bash or other languages/frameworks?
另请注意,根据算术扩展中的POSIX Shell 语言标准
$((...))
:bash
因此,从和中省略浮点运算/bin/dash
符合 POSIX 规范。