Input:
> printf 1\n\2\n3\n
1
2
3
Desired output:
0
1
1
Typing printf 1\n\2\n3\n | dc -e '-p'
the output is:
dc: stack empty
dc: stack empty
Input:
> printf 1\n\2\n3\n
1
2
3
Desired output:
0
1
1
Typing printf 1\n\2\n3\n | dc -e '-p'
the output is:
dc: stack empty
dc: stack empty
You can pipe the entire set of commands directly to dc
.
printf "1 2 3 - - p" | dc
If you'd like to subtract an arbitrary stack you can use a macro.
printf "%s [-z1<r]srz1<rp" "<insert numbers here>" | dc
So for example
printf "%s [-z1<r]srz1<rp" "100 5 2 1" | dc
96
The macro does the following:
[
Start macro-
Subtract top two numbers and push back to stackz1<r
Push stack size to stack and 1, then compare LESSTHAN, if true run r
macro]sr
End of macro, store in register rz1<r
Check if stack contains elements by testing 1 < Stack Size
p
Print result.
`