"invalid arithmetic operator" error when trying to add variables in Bash script

Pyt*_*ire 4 bash scripts

Coming from a Python background, this is my first simple Bash script and it does not work. I'm confused.

#!/bin/bash
RTCHOST='192.168.0.143'
PANEL1=$(client read-value --host $RTCHOST --name dc_1)
echo Panel1: $PANEL1
PANEL2=$(client read-value --host $RTCHOST --name dc_2)
echo Panel2: $PANEL2
PANELCONSUMPTION=$(($PANEL1 + $PANEL2))
echo Consumption: $PANELCONSUMPTION
Run Code Online (Sandbox Code Playgroud)

When I run the script, I get a syntax error:

invalid arithmetic operator
Run Code Online (Sandbox Code Playgroud)

怎么了?

小智 6

我猜$PANEL1$PANEL2是浮点数。但是,Bash 只能处理整数,不能处理浮点数,如算术扩展中所述。如果您尝试对浮点数求和,则会出现错误invalid arithmetic operator

只需在这里尝试一下:

#!/bin/bash
A='5'
B='6.4'
C=$(($A + $B))
echo $C
Run Code Online (Sandbox Code Playgroud)

Stack Overflow 线程中描述了添加浮点数:How can I add numeric in a Bash script?

本质上,您可以使用外部实用程序(例如 )bc来执行此示例中所示的操作:

#!/bin/bash
A='5'
B='6.4'
C=$(echo $A + $B | bc) 
echo $C
Run Code Online (Sandbox Code Playgroud)

这有效并返回预期值 11.4。