如何在unix csh/tcsh shell中执行基本运算

fnatzsnv  于 2022-11-23  发布在  Unix
关注(0)|答案(7)|浏览(277)

在windows下,当我需要执行一个基本的计算时,我使用了一个内置的计算器。现在我想知道如果你只有一个 shell ,什么是常用的方法。
谢谢

wtzytmuj

wtzytmuj1#

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方法。

k4aesqcs

k4aesqcs3#

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

$ expr 1 + 1
2

expr有一个合理的返回值,因此当表达式的计算结果为非零值时,它会成功,允许代码(在Bourne shell中)如下:

$ op="1 + 1"
$ if expr $op > /dev/null; then echo "$op is not zero"; fi
1 + 1 is not zero

或者(如果使用支持数组的shell):

$ op=(8 \* 3)
$ if expr "${op[@]}" > /dev/null; then echo "${op[@]} is not zero"; fi
8 * 3 is not zero

请注意,Bourne shell中的if语法与csh家族中的语法完全不同,因此其用处稍小,您需要对照#?的值进行检查。

hgb9j2n6

hgb9j2n64#

Bash支持$(( ))内的基本(仅限整数)算术:

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

(直接从IBM链接复制的示例)

6ojccjat

6ojccjat5#

你可以随时使用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()
but5z9lq

but5z9lq6#

如果bc或expr的功能不够强大,您也可以轻松地使用Perl:

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

qcbq4gxm7#

另一种选择是使用内置BC命令

相关问题