xinghe0 发表于 2018-8-24 13:05:32

shell-变量的数值计算2

  let命令的用法
  # i=2
  # let i=i+8
  # echo $i
  10
  # i=i+8
  # echo $i
  10+8
  #
  从上面可以看出如果没有用let的话,是不会计算的,就把我们的计算公式看成一个字符串来用
  expr命令的用法
  expr命令一般用于整数值,但也可用于字符串,用来求表达式变量的值,同时expr也是一个手工命令行计算器也就是说它自己本身就有计算功能的,如图
  # expr 2 - 2
  0
  # expr 2 + 2
  4
  # expr 2 \* 2
  4
  # expr 2 \/ 2
  1
  # expr 2 \% 2
  0
  #
  一般在shell里面的用法也是这样的
  # result="$(expr 3 + 4)"
  # echo $result
  7
  注意:运算符左右都有空格的,使用符号的时候最好给反斜线屏蔽其特定含义
  在循环中可用于增量计算,不过一般我们用let命令,如果你用[]的话可以不用空括号
  # expr $
  5
  # expr $
  9
  expr可以用来判断某个文件是不是某个后缀的,如
  # expr "id_dsa.pub" : ".*.pub"
  10
  如果是pub后缀就会输出这个文件名字符串的长度。如果不是的话就会输出0
  可以判断变量是否为整数,如图
  # cat compute.sh
  #!/bin/bash
  read -p "please input:" a
  expr $a + 0 &>/dev/null
  [ $? -eq 0 ] && echo int || echo chars
  # sh compute.sh
  please input:a
  chars
  # sh compute.sh
  please input:1
  int
  #
  bc命令的用法
  bc是unix下的计算器,它也可以用在命令行下面,bc支持科学计算,所以经常用,一般的用法如下
  # echo 5.1+5|bc
  10.1
  # echo 5.1+10|bc
  15.1
  # seq -s "+" 100|bc
  5050
  #
  scale是指保留小数点后几位
  obase是把十进制转换为二进制
  # echo "scale=2;5.23/3.13"|bc
  1.67
  # echo "scale=3;5.23/3.13"|bc
  1.670
  # echo "obase=2;8"|bc
  1000
  bc的特点是支持小数运算。
  可以看看著名的杨辉三角(主要看第一种就可以啦)
  http://oldboy.blog.51cto.com/2561410/756234

页: [1]
查看完整版本: shell-变量的数值计算2