[关闭]
@yanglt7 2018-10-24T01:35:05.000000Z 字数 3216 阅读 1066

《Shell 编程》04_Shell 变量的数值计算

Shell


4.1 算术运算符

算术运算符 意义
+、- 加法、减法
*、/、% 乘法、除法、取余
** 幂运算
++、-- 增加及减少
!、&&、|| 逻辑非、与、或
<、<=、>、>= 比较符号
==、!=、= 比较符号
<<、>> 向左/右移位
~、|、&、^ 按位取反、按位异或、按位与、按位或
=、+=、-=、*=、/=、%= 赋值运算符
运算操作符与运算命令 意义
(()) 用于整数运算
let 用于整数运算
expr 可用于整数运算,还有其他额外功能
bc Linux下的一个计算器程序(适合整数及小数运算)
$[] 用于整数运算
awk 用于整数或小数运算
declare 定义变量值及属性,-i 参数可以用于定义整型变量,做运算

4.2 双小括号 “(())” 数值运算命令

运算操作符与运算命令 意义
((i=i+1)) 运算后赋值法
i=$((i+1)) 表达式运算后赋值给 i
((8>7&&5==5)) 可以进行比较,也可加入逻辑运算
echo $((2+1)) 可输出运算结果
  1. [root@web001 scripts]# echo $((1+1))
  2. 2
  3. [root@web001 scripts]# i=5
  4. [root@web001 scripts]# ((i=i*2))
  5. [root@web001 scripts]# echo $i
  6. [root@web001 scripts]# echo $((8>7&&5==5))
  7. 1

4.3 let 运算命令

  1. [root@web001 scripts]# i=2
  2. [root@web001 scripts]# let i=i+2
  3. [root@web001 scripts]# echo $i
  4. 4
  5. [root@web001 scripts]# i=2
  6. [root@web001 scripts]# i=i+2
  7. [root@web001 scripts]# echo $i
  8. i+2

4.4 expr 命令

4.4.1 expr 用于计算

  1. [root@web001 scripts]# expr 2 + 2
  2. 4
  3. [root@web001 scripts]# expr 2 \* 2
  4. 4
  5. [root@web001 scripts]# expr 2 * 2
  6. expr: syntax error

4.4.2 expr 配合变量计算

  1. [root@web001 scripts]# i=5
  2. [root@web001 scripts]# i=`expr $i + 6`
  3. [root@web001 scripts]# echo $i
  4. 11

4.4.3 通过 expr 判断变量或字符串是否为整数

  1. [root@web001 scripts]# i=6
  2. [root@web001 scripts]# expr $i + 5 &>/dev/null
  3. [root@web001 scripts]# echo $?
  4. 0
  5. [root@web001 scripts]# i=a
  6. [root@web001 scripts]# expr $i + 5 &>/dev/null
  7. [root@web001 scripts]# echo $?
  8. 2
  9. #返回 0 则表示变量为整数,否则就不是整数
  10. [root@web001 scripts]# cat expr.sh
  11. #!/bin/bash
  12. expr $1 + 1 >/dev/null 2>&1
  13. [ $? -eq 0 ] && echo int || echo chars
  14. [root@web001 scripts]# sh expr.sh 1
  15. int
  16. [root@web001 scripts]# sh expr.sh a
  17. chars

4.4.4 判断文件扩展命名是否符合要求

  1. [root@web001 scripts]# cat expr1.sh
  2. #!bin/bash
  3. if expr "$1" : ".*\.pub" &>/dev/null
  4. then
  5. echo "you are using $1"
  6. else
  7. echo "pls use *.pub file"
  8. fi
  9. [root@web001 scripts]# sh expr1.sh 1
  10. pls use *.pub file
  11. [root@web001 scripts]# sh expr1.sh id.pub
  12. you are using id.pub

4.4.5 计算字符串长度

  1. [root@web001 scripts]# char="I am ylt."
  2. [root@web001 scripts]# expr length "$char"
  3. 9
  4. [root@web001 scripts]# echo ${#char}
  5. 9
  6. [root@web001 scripts]# echo ${char}|wc -L
  7. 9
  8. [root@web001 scripts]# echo ${char}|awk '{print length($0)}'
  9. 9

4.5 bc 命令

  1. [root@web001 scripts]# bc
  2. bc 1.06.95
  3. Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
  4. This is free software with ABSOLUTELY NO WARRANTY.
  5. For details type `warranty'.
  6. 1+1
  7. 2
  8. quit
  1. [root@web001 scripts]# echo 3.5+5.5|bc
  2. 9.0
  3. [root@web001 scripts]# echo "scale=2;5/3"|bc
  4. 1.66
  1. [root@web001 scripts]# i=3
  2. [root@web001 scripts]# i=`echo $i+3|bc`
  3. [root@web001 scripts]# echo $i
  4. 6

4.6 awk 实现计算

  1. [root@web001 scripts]# echo "3.3 2.2"|awk '{print ($1-$2)}'
  2. 1.1

4.7 declare 命令用法

  1. [root@web001 scripts]# declare -i A=3 B=4
  2. [root@web001 scripts]# A=A+B
  3. [root@web001 scripts]# echo $A
  4. 7

4.8 $[]

  1. [root@web001 scripts]# i=$[i+3]
  2. [root@web001 scripts]# echo $i
  3. 5
  4. [root@web001 scripts]# echo $[2/3]
  5. 0
  6. [root@web001 scripts]# echo $[3/2]
  7. 1
  8. [root@web001 scripts]# echo $[3%2]
  9. 1
  10. [root@web001 scripts]# echo $[2%3]
  11. 2

4.9 read

  1. [root@web001 scripts]# read -t 5 -p "Pls input one num:" num
  2. Pls input one num:3
  3. [root@web001 scripts]# echo $num
  4. 3
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注