expr

该命令是在跟 @lifanxi 商量筹划 NanjingLug Ubuntu Release Party 的过程中学到的,在此记录,顺便把 Linux 下常用的计算工具总结一下。

man 手册的第一句话就知道了这个 expr 的由来:evaluate expressions。经实验,只能支持一些简单的运算,加了括号就会出现语法错误。

字符串操作

$ expr length "jaseywang.info"
14

$ expr substr "jaseywang.info" 2 2
as

$ expr index "jaseywang.info" a
2

数值操作

$ expr 10 % 3
1

$ expr $RANDOM % 100
10

$ expr 10 \* 10
100

$ expr 10 + 10
20

$ expr 10 – 10
0

$ a=3
$ expr $a + 3
6

$ b=`expr 3 + 3`
$ echo $b
6

上面的例子比较简单,看字面意思就能知道什么意思了。

注意:在进行数值计算时,%,/,+,- 这几个符号的两边需要加空格;使用 * 号时,需要加 \ 进行转义。

带有环境变量 $RANDOM 的那个表达式就是上周活动进行抽奖的方式。

bc 是个交互式/非交互式的命令,相比 expr 来说更强大。

交互式

$ bc
3+6
9

$ bc
3^3
27

$ bc
1+2;2-1
3
1

$ bc
scale=3
1/3
0.333

非交互式

$ echo "(1+2)*3" | bc
9

$ echo "scale=3;1/3" | bc
0.333

进制运算

$ echo "ibase=16;A" | bc
10

$ echo "ibase=2;111" | bc
7

$ echo "obase=16;ibase=2;1111" | bc
F

$ echo "obase=16;65535" | bc
FFFF

注意:同时出现 obase 和 ibase 的情况下,obase 靠前,否则最终结果出错。

文件运算

$ cat cal
1+2
1-2

$ cat cal | bc
3
-1

至于 echo,awk 也可以进行数值的运算,个人认为没有上述的两个专业,不在此总结。

  • http://mindsfree.info mazhechao

    想到了python