Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本算术语法错误_Bash - Fatal编程技术网

Bash脚本算术语法错误

Bash脚本算术语法错误,bash,Bash,脚本: 错误: #!/bin/bash vpct=5.3 echo $((vpct*15)) 我知道我不需要脚本来乘法5.3*15,但是这个小脚本可以挑出错误。请告知。$($vpct*15))/(添加一个$符号即可)您应该使用bc进行浮点运算: ./abc.sh: line 5: 5.3: syntax error: invalid arithmetic operator (error token is ".3") Shebang应该像#那样写 无论如何,$(())只适用于整数。根

脚本:

错误:

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

我知道我不需要脚本来乘法
5.3*15
,但是这个小脚本可以挑出错误。请告知。

$($vpct*15))/(添加一个$符号即可)

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

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

Shebang应该像
#那样写
无论如何,
$(())
只适用于整数。

根据:

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

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

echo "$vpct*15" | bc

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

echo "$vpct*15" | bc

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

--很抱歉,我无法尝试这些解决方案,但如果其中一个适合您,我会很高兴:)/abc.sh:第5行:5.3*15:语法错误:无效的算术运算符(错误标记为“.3*15”)worksorry Humble和dogbane——至少以上是同一个问题的链接。在Bash的算术上下文中,美元符号是不必要的。因为您列出了备选方案,如果您使用zsh而不是Bash,脚本将简单地工作。
awk -v vpct="$VPCT" 'BEGIN{print vpct * 15}'

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

echo  "$vpct 15 * p" | dc