Bash脚本算术语法出错

Hum*_*ger 5 bash

脚本:

#!/bin/bash
vpct=5.3 
echo $((vpct*15))    
Run Code Online (Sandbox Code Playgroud)

错误:

./abc.sh: line 5: 5.3: syntax error: invalid arithmetic operator (error token is ".3")
Run Code Online (Sandbox Code Playgroud)

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

Sir*_*ius 8

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

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

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

echo "$vpct*15" | bc
Run Code Online (Sandbox Code Playgroud)


kur*_*umi 3

此外bc,还有其他工具可以尝试

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

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

echo  "$vpct 15 * p" | dc
Run Code Online (Sandbox Code Playgroud)