2009-09-16 298 views
3

在Windows中,当我需要执行一个基本的计算,我使用的是内置的计算器。现在我想知道如果你只有一个shell,常用的方法是什么。如何从UNIX CSH执行基本的算术/ tcsh外壳

感谢

+1

我不能相信没有人提出一个Perl的解决方案! ;-) – 2009-09-16 04:11:54

+0

那里还有很多基于gui的linux计算器。但如果你喜欢RPN(类似于Forth),则dc或bc可以使用'dc' – knittl 2009-09-16 09:18:07

回答

1

而且你总是可以使用Python解释器,它通常包含在Linux发行版。

http://docs.python.org/tutorial/introduction.html#using-python-as-a-calculator

$ python 
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 2+2 
4 
>>> # This is a comment 
... 2+2 
4 
>>> 2+2 # and a comment on the same line as code 
4 
>>> (50-5*6)/4 
5 
>>> # Integer division returns the floor: 
... 7/3 
2 
>>> 7/-3 
-3 
>>> # use float to get floating point results. 
>>> 7/3.0 
2.3333333333333335 

等号( '=')被用于将值分配给变量。此后,没有结果到下一个对话提示之前显示:

>>> width = 20 
>>> height = 5*9 
>>> width * height 
900 

当然还有应解决大多数的计算器需求math模块。

>>> import math 
>>> math.pi 
3.1415926535897931 
>>> math.e 
2.7182818284590451 
>>> math.cos() # cosine 
>>> math.sqrt() 
>>> math.log() 
>>> math.log10() 
+0

是的,使用交互式Python解释器:-)。我的戴夫 – Jubal 2009-09-16 07:04:46

+0

这个问题是关于tcsh/csh的具体问题。那些没有安装python的系统呢? – Emiswelt 2018-03-08 18:51:20

9

您可以使用dc。或bc

+0

'如果你喜欢使用中缀表示法(类似C),则使用'bc' – 2009-09-16 04:14:45

+0

正确。 (但RPN是一个神圣的极客信条;让我们不要因为对另一个兄弟说不尊重它) – alphazero 2009-09-16 12:13:09

+0

一位真正的信徒写他的散文主题* *宾语* *动词*:“RPN,神圣的极客信条,是。“ – 2009-09-16 13:38:46

4

猛砸supports basic (integer only) arithmetic$(())

$ echo $((100/3)) 
33 
$ myvar="56" 
$ echo $(($myvar + 12)) 
68 
$ echo $(($myvar - $myvar)) 
0 
$ myvar=$(($myvar + 1)) 
$ echo $myvar 
57 

(例如,从IBM的链接直接复制)

+0

+1此外,我还将它用于定点非整数问题,方法是在方程中加上零,并在我头上插入小数点。 :) – 2009-09-16 20:49:41

+0

沿着这些线,'((...))'是类似的,但作为一个命令(不会取代结果,'$?'获取设置),'$ [...]'是'$ ((...))'。 – ephemient 2009-09-16 21:16:51

+0

'$((...))'是所有SH派生的shell的有效语法,例如, Bash,Zsh。请参阅[开放组基本规范问题7](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_04) – t0r0X 2016-01-29 18:45:55

0

如果您使用bash,这里有一个简便的事例一个小的shell脚本,允许你从命令行进行计算(包括:对于浮点数NG指定精度):

http://www.novell.com/coolsolutions/tools/17043.html

+0

它使用'bc'。 – 2009-09-16 04:16:18

+0

是的,它的确如此。它只是增加了以单行命令方式调用它的能力,而不像一个程序那样需要输入。 – Amber 2009-09-16 04:47:34

12

this web page(用于csh和衍生物,既然你问):

% @ x = (354 - 128 + 52 * 5/3) 
% echo Result is $x 
Result is 174 

% set y = (354 - 128 + 52/3) 
% echo Result is $y 
Result is 354 - 128 + 52/3 

通知不同的结果。

就我个人而言,我坚持/bin/sh并致电awk什么的(为了最大限度的便携性),或者其他人展示了bash的方法。

7

这里给出了很多很好的解决方案,但 在shell中进行算术运算的'经典'方法是使用expr的 。

+0

唯一需要注意的是,由于“*”是shell中的特殊字符,因此在与expr进行乘法运算时需要将其转义。 E.g. $ expr 1 + 2 * 3 expr:语法错误 $ expr 1 + 2 \ * 3 7 – DVK 2009-09-16 20:44:59

0

您也可以使用Perl很容易在那里BC或EXPR都不够强大:

$ perl5.8 -e '$a=1+2; print "$a\n"' 
3 
0

替代选择是使用内置的BC命令