Как выполнить основную арифметику из оболочки Unix csh / tcsh - PullRequest
3 голосов
/ 16 сентября 2009

Под окнами, когда мне нужно выполнить базовые вычисления, я использую встроенный калькулятор. Теперь я хотел бы узнать, что является обычным способом, если у вас есть только оболочка.

Спасибо

Ответы [ 8 ]

15 голосов
/ 16 сентября 2009

С этой веб-страницы (для 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.

9 голосов
/ 16 сентября 2009

Вы можете использовать dc .Или до н.э. .

8 голосов
/ 16 сентября 2009

Здесь приведено много хороших решений, но «классический» способ сделать арифметику в оболочке с экспр.

4 голосов
/ 16 сентября 2009

Bash поддерживает базовую (только целочисленную) арифметику внутри $(( )):

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

(пример скопирован прямо из ссылки IBM)

1 голос
/ 16 сентября 2009

И вы всегда можете использовать интерпретатор 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 голосов
/ 06 октября 2009

Альтернативный вариант - использовать встроенную команду BC

0 голосов
/ 17 сентября 2009

Вы также можете легко использовать Perl, если bc или expr недостаточно мощны:

$ perl5.8 -e '$a=1+2; print "$a\n"' 
3
0 голосов
/ 16 сентября 2009

Если вы используете bash, вот удобный пример небольшого сценария оболочки, который позволяет выполнять вычисления из командной строки (включая указание точности для чисел с плавающей запятой):

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

...