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<r
Pressione o tamanho da pilha para empilhar e 1, em seguida, compare LESSTHAN, se verdadeiro executarr
macro -
]sr
Fim da macro, armazenar no registro r -
z1<r
Verifique se a pilha contém elementos testando1 < Stack Size
-
p
Resultado da impressão. -
'