我在完成如此简单的任务时遇到了麻烦...
请在下面找到相关代码:
loewdin_fuk=$(echo $line_fukui|awk '{print $4}')
nbo_fuk=$(echo $line_fukui|awk '{print $5}')
echo "loewdin_fuk $loewdin_fuk nbo_fuk $nbo_fuk"
aver_fuk=$(($loewdin_fuk + $nbo_fuk))
\#aver_fuk=$(echo "scale=4; 0.5*($loewdin_fuk $nbo_fuk)" | bc -l)
输出为:
loewdin_fuk +0.1662 nbo_fuk +0.1865
./collectFukui.sh: line 151: +0.1662 + +0.1865: syntax error: invalid
arithmetic operator (error token is ".1662 + +0.1865")
使用命令行:
aver_fuk=$(echo "scale=4; 0.5*($loewdin_fuk $nbo_fuk)" | bc -l)
导致以下输出:
loewdin_fuk +0.1662 nbo_fuk +0.1865
(standard_in) 1: syntax error
我不知道怎么了...谢谢你!
最好
我
答案 0 :(得分:1)
这里的问题是bc
不认为+
是一元运算符。因此+0.1662 +0.1865
是无效的语法。 (如果第一个数字为负数,那会很好,因为-
是一元运算符。)
因此,如果您想使用bc
,则需要执行以下操作:
aver_fuk=$(echo "scale=4; 0.5*(0$loewdin_fuk $nbo_fuk)" | bc -l)
无论$loewdin_fuk
是否以符号字符开头,都可以使用0且不带空格。如果在两者之间放置一个空格,则可以使用带有显式符号字符的值,但对没有符号的值会失败。