Gra*_*eme 47
dc是一个非常古老的工具,比bc. 引用维基百科页面:
它是最古老的 Unix 实用程序之一,甚至早于 C 编程语言的发明。像那个年代的其他实用程序一样,它具有一组强大的功能,但语法非常简洁。
语法是一种反向波兰符号,这基本上意味着参数(即数字)首先出现,然后是运算符。dc用法的一个基本示例是:
echo '3 4 * p' | dc
Run Code Online (Sandbox Code Playgroud)
当p需要打印的计算结果。bc另一方面,使用更熟悉的中缀符号,因此使用起来更直观。下面是一个bc使用示例:
echo '3 * 4' | bc
Run Code Online (Sandbox Code Playgroud)
bc由 POSIX 标准化,因此可能是两者中更便携的(至少在现代系统上)。如果您正在做手动计算器工作,那么它绝对是您的选择(除非您有点受虐狂)。dc尽管如此,它仍然可以使用,这里有一个反向波兰符号派上用场的情况。想象一下,你有一个程序,它输出一个你想要总计的数字流,例如:
23
7
90
74
29
Run Code Online (Sandbox Code Playgroud)
要做到这dc一点非常简单(至少在现代实现中,每个运算符可以采用两个以上的数字),因为您只需要将 a 添加+p到流中,例如:
{ gen_nums; echo +p } | dc
Run Code Online (Sandbox Code Playgroud)
但bc它更复杂,因为我们不仅需要+ 在每个数字之间放置 a并确保所有内容都在同一行上,还要确保最后有一个换行符:
{ gen_nums | sed '$ !s/$/+/' | tr -d '\n'; echo; } | bc
Run Code Online (Sandbox Code Playgroud)
dev*_*ull 10
两者之间的基本区别是dc使用反向波兰表示法。它甚至需要显式命令才能产生输出。
您可以通过以下方式添加两个整数bc:
bc <<< "2+4"
Run Code Online (Sandbox Code Playgroud)
它会6自己在一条线上生产。但是,在dc你需要说:
dc <<< "2 4 +p"
Run Code Online (Sandbox Code Playgroud)
您还可以使用 做很多有趣的事情dc,例如,请参阅我在此处的回答以进行制作
Hello World!
Run Code Online (Sandbox Code Playgroud)
使用dc.
dc<<<“8 9*P101P108P108P111P4 8*P81 6+P111P114P108P100P33P”