Você pode canalizar todo o conjunto de comandos diretamente para dc .
printf "1 2 3 - - p" | dc
Se você quiser subtrair uma pilha arbitrária, poderá usar uma macro.
printf "%s [-z1<r]srz1<rp" "<insert numbers here>" | dc
Então, por exemplo
printf "%s [-z1<r]srz1<rp" "100 5 2 1" | dc
96
A macro faz o seguinte:
-
[Iniciar macro -
-Subtrai os dois números principais e empurre de volta para a pilha -
z1<rPressione o tamanho da pilha para empilhar e 1, em seguida, compare LESSTHAN, se verdadeiro executarrmacro -
]srFim da macro, armazenar no registro r -
z1<rVerifique se a pilha contém elementos testando1 < Stack Size -
pResultado da impressão. -
'