Bash脚本算术语法出错

时间:2011-02-18 11:34:45

标签: bash

脚本:

#!/bin/bash
vpct=5.3 
echo $((vpct*15))    

错误:

./abc.sh: line 5: 5.3: syntax error: invalid arithmetic operator (error token is ".3")

我知道我不需要一个脚本来乘以5.3 * 15,但是这个小脚本可以找出错误。请指教。

6 个答案:

答案 0 :(得分:8)

根据http://www.softpanorama.org/Scripting/Shellorama/arithmetic_expressions.shtml

  

Bash不了解浮点运算。它将包含小数点的数字视为字符串。

你应该使用bc来执行这样的计算,就像在dogbane的解决方案中一样,除了你应该使用引号转义表达式,这样*字符不会导致不必要的shell扩展。

echo "$vpct*15" | bc

答案 1 :(得分:3)

你应该使用bc进行浮点运算:

echo "$vpct*15" | bc

答案 2 :(得分:3)

除了bc之外,您还可以尝试使用其他工具

awk -v vpct="$VPCT" 'BEGIN{print vpct * 15}'

echo $vpct | ruby -e 'print gets.to_f * 15 '

echo  "$vpct 15 * p" | dc

答案 3 :(得分:0)

$(($ vpct * 15))//(添加$符号应该这样做)

答案 4 :(得分:0)

Shebang应该写成#! 无论如何$(())仅适用于整数。

答案 5 :(得分:0)

如果你有ksh可用,它将执行浮点运算。