我正在嘗試在bash中執行浮點算法,但由於不支持浮點數,試圖使用AWK獲取解決方案。下面是我面臨的問題:將bash表達式傳遞給AWK用於浮點算術
我看到我這個工作的罰款:
代碼
echo - | awk '{printf("%04.4f \n", (-225.2*7+30*6)/17 + (19^2)/9) }'
輸出
-42.0301
但我的動機是「讀取表達式」,並計算正確的值爲4位小數,所以在代碼輸入相同的表達式(-225.2 * 7 + 30 * 6)/ 17 +(19^2)/ 9)其給出不正確的值(我想變量作爲字符串AWK合格):
代碼
read inpt
echo - | awk -v input=$inpt '{printf("%04.4f \n", input) }'
輸出
0.0000
注意:請忽略此示例表達式中第二個+的空格,以便我可以使用sed或類似的方法刪除空間(使用空格時,我會在從bash傳遞變量時在awk中獲取語法錯誤)。
任何幫助,高度讚賞。在此先感謝
聚苯乙烯:在我的情況bash版本是「bash-4.2」。我想它的bash版本阻止我使用其他選項。
Bash版本不影響外部命令的可用性。訪問'bc'可能是'sudo apt install -y bc'或者您的平臺的等價物。 – tripleee