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。