2009-09-16 174 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命令