Linux 工具 dc 给出 "stack underflow" 错误

Linux tool dc gives "stack underflow" error

我正在尝试通过 shell 计算浮点数。当我执行以下行时,dc 工具失败。

dc -e "4000 0.531 / p"

首先,我以为问题与浮动精度有关。然后,我尝试用整数更改分频器。不幸的是,结果是一样的。

dc -e "4000 1000 / p"

上面的两次执行都给出了相同的错误:

dc: stack underflow

主机 CPU 是放置在 Zynq Ultrascale+ SoC 中的 ARM-Cortex A53。会是什么原因呢?我该如何解决?

附加信息

dc --version的输出也给出相同的输出。

dc: stack underflow

幸运的是,dc --help 可以正常工作并显示如下版本。

BusyBox v1.24.1 (2021-12-08 08:10:27 UTC) multi-call binary.

type dc的输出如下

dc is hashed (/usr/bin/dc)

What would be the reason?

Busybox dc 不接受任何 -e 参数。因为 -e 被解析为 - 后跟命令 e,所以 - 尝试弹出两个值并且堆栈为空。

How can I solve it?

刚刚:

dc "4000 0.531 / p"

无论如何,正确的方法是将数据通过管道传输到标准输入。

echo "4000 0.531 / p" | dc