Dc

如何使用dc獲得數字之間的差異?

  • January 28, 2016

輸入:

> printf 1\n\2\n3\n
1
2
3

期望的輸出:

0
1
1

輸入printf 1\n\2\n3\n | dc -e '-p'輸出是:

dc: stack empty
dc: stack empty

您可以將整個命令集直接通過管道傳輸到dc.

printf "1 2 3 - - p" | dc

如果您想減去任意堆棧,您可以使用宏。

printf "%s [-z1<r]srz1<rp" "<insert numbers here>" | dc

所以例如

printf "%s [-z1<r]srz1<rp" "100 5 2 1" | dc
96

該宏執行以下操作:

  • [啟動宏
  • -減去前兩個數字並推回堆棧
  • z1<r將堆棧大小推送到堆棧和 1,然後比較 LESSTHAN,如果為 true 則執行r
  • ]sr宏結束,存入寄存器 r
  • z1<r通過測試檢查堆棧是否包含元素1 < Stack Size
  • p列印結果。
  • `

引用自:https://unix.stackexchange.com/questions/258388