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

版权声明: https://blog.csdn.net/weixin_42061048/article/details/83338917

《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)) 可输出运算结果
  • 涉及的变量或数字必须为整数(整型)。
  • “(())” 里的所有字符之间无论有无空格都不影响结果。
[root@web001 scripts]# echo $((1+1))
2
[root@web001 scripts]# i=5
[root@web001 scripts]# ((i=i*2))
[root@web001 scripts]# echo $i
[root@web001 scripts]# echo $((8>7&&5==5))
1

4.3 let 运算命令

  • 语法格式:let 赋值表达式 等同于 “((赋值表达式))”
[root@web001 scripts]# i=2
[root@web001 scripts]# let i=i+2
[root@web001 scripts]# echo $i
4

[root@web001 scripts]# i=2
[root@web001 scripts]# i=i+2
[root@web001 scripts]# echo $i
i+2

4.4 expr 命令

  • expr(evaluate(求值) expression(表达式))命令既可用于整数运算,也可用于相关字符串长度、匹配等的运算处理。

4.4.1 expr 用于计算

  • 语法:expr Expression
[root@web001 scripts]# expr 2 + 2
4
[root@web001 scripts]# expr 2 \* 2
4
[root@web001 scripts]# expr 2 * 2
expr: syntax error
  • 运算符及用于计算的数字左右都至少有一个空格。
  • 使用乘号时,必须用反斜线屏蔽其特定含义。

4.4.2 expr 配合变量计算

  • expr 在 Shell 中可配合变量计算,但需要用反引号将计算表达式括起来。
[root@web001 scripts]# i=5
[root@web001 scripts]# i=`expr $i + 6`
[root@web001 scripts]# echo $i
11

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

[root@web001 scripts]# i=6
[root@web001 scripts]# expr $i + 5 &>/dev/null
[root@web001 scripts]# echo $?
0

[root@web001 scripts]# i=a
[root@web001 scripts]# expr $i + 5 &>/dev/null
[root@web001 scripts]# echo $?
2
#返回 0 则表示变量为整数,否则就不是整数

[root@web001 scripts]# cat expr.sh
#!/bin/bash
expr $1 + 1 >/dev/null 2>&1
[ $? -eq 0 ] && echo int || echo chars
[root@web001 scripts]# sh expr.sh 1
int
[root@web001 scripts]# sh expr.sh a
chars

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

[root@web001 scripts]# cat expr1.sh
#!bin/bash
if expr "$1" : ".*\.pub" &>/dev/null
        then
                echo "you are using $1"
else
        echo "pls use *.pub file"
fi
[root@web001 scripts]# sh expr1.sh 1
pls use *.pub file
[root@web001 scripts]# sh expr1.sh id.pub
you are using id.pub

4.4.5 计算字符串长度

[root@web001 scripts]# char="I am ylt."
[root@web001 scripts]# expr length "$char"
9
[root@web001 scripts]# echo ${#char}
9
[root@web001 scripts]# echo ${char}|wc -L
9
[root@web001 scripts]# echo ${char}|awk '{print length($0)}'
9

4.5 bc 命令

  • 作为计算器
[root@web001 scripts]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1+1
2
quit
  • 用在命令行实现运算功能
[root@web001 scripts]# echo 3.5+5.5|bc
9.0
[root@web001 scripts]# echo "scale=2;5/3"|bc
1.66
  • 配合变量计算
[root@web001 scripts]# i=3
[root@web001 scripts]# i=`echo $i+3|bc`
[root@web001 scripts]# echo $i
6

4.6 awk 实现计算

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

4.7 declare 命令用法

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

4.8 $[]

[root@web001 scripts]# i=$[i+3]
[root@web001 scripts]# echo $i
5
[root@web001 scripts]# echo $[2/3]
0
[root@web001 scripts]# echo $[3/2]
1
[root@web001 scripts]# echo $[3%2]
1
[root@web001 scripts]# echo $[2%3]
2

4.9 read

  • Shell 变量处理可直接赋值或脚本传参外,还可使用 read 命令从标准输入中获得,read 为 bash 内置命令。

  • 语法格式:read [参数] [变量名]

  • 常用参数如下:

    • -p prompt:设置提示信息
    • -t timeout:设置输入等待的时间,单位默认为秒
  • 基本读入功能

[root@web001 scripts]# read -t 5 -p "Pls input one num:" num
Pls input one num:3
[root@web001 scripts]# echo $num
3

猜你喜欢

转载自blog.csdn.net/weixin_42061048/article/details/83338917
今日推荐