[英]Addition/subtraktion/multiplikation of floats in bash with bc -l
如此簡單的任務讓我有些麻煩...
請在下面找到相關代碼:
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
我不明白怎么了...謝謝你!
最好,
我
這里的問題是, bc
不認為+
是一元運算符。 因此+0.1662 +0.1865
是無效的語法。 (如果第一個數字為負數,則可以正常工作,因為-
是一元運算符。)
因此,如果要使用bc
,則需要執行以下操作:
aver_fuk=$(echo "scale=4; 0.5*(0$loewdin_fuk $nbo_fuk)" | bc -l)
無論$loewdin_fuk
是否以符號字符開頭,都可以在前面加0且不帶空格。 如果在兩者之間放置一個空格,它將使用帶有顯式符號字符的值,但對沒有符號的值將失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.