赞
踩
linux默认 所有变量赋值均为字符串;
[userwin@MiWiFi-R3L-srv ~]$ a=100
[userwin@MiWiFi-R3L-srv ~]$ b=50
[userwin@MiWiFi-R3L-srv ~]$ c=$a+$b
[userwin@MiWiFi-R3L-srv ~]$ echo $c
100+50
linux 进行数值运算的方法
语法格式: declare [参数] [目录]
常用参数
参数 | 作用 |
---|---|
- | 给变量设定类型属性 |
+ | 取消变量的类型属性 |
-i | 将变量声明为整数型,integer类型 |
-x | 将变量声明为环境变量(相当于export) |
-p | 显示指定变量被声明类型,查看变量属性值 |
-r | 将变量声明为只读变量 |
-a | 将变量声明为数组变量 |
# 接上面示例
# declare -p
[userwin@MiWiFi-R3L-srv ~]$ declare -p a
declare -- a="100"
[userwin@MiWiFi-R3L-srv ~]$ declare -p b
declare -- b="50"
[userwin@MiWiFi-R3L-srv ~]$ declare -p c
declare -- c="100+50"
# declare -i
[userwin@MiWiFi-R3L-srv ~]$ declare -i c=100+50
[userwin@MiWiFi-R3L-srv ~]$ echo $c
150
# export c 将变量c设置为环境变量并查看其属性
[userwin@MiWiFi-R3L-srv ~]$ export c
[userwin@MiWiFi-R3L-srv ~]$ declare -p c
declare -ix c="150"
# declare + 取消变量c的环境变量属性
[userwin@MiWiFi-R3L-srv ~]$ declare +x c
[userwin@MiWiFi-R3L-srv ~]$ declare -p c
declare -i c="150"
# declare - 将变量c添加到环境变量;或者说为变量c添加环境变量属性
[userwin@MiWiFi-R3L-srv ~]$ declare -x c
[userwin@MiWiFi-R3L-srv ~]$ declare -p c
declare -ix c="150"
变量只读属性不能使用declare + 取消;只读变量使用功能unset也无法删除
如果变量被设置成只读,变量为临时变量时,重启系统就会没有了
# declare -r 将变量c设置为只读变量,当修改时会报错
[userwin@MiWiFi-R3L-srv ~]$ declare -r c
[userwin@MiWiFi-R3L-srv ~]$ declare -p c
declare -ir c="150"
[userwin@MiWiFi-R3L-srv ~]$ c=250
-bash: c: 只读变量
# 变量只读属性不能使用declare + 取消
[userwin@MiWiFi-R3L-srv ~]$ declare +r c
-bash: declare: c: 只读变量
# 只读变量使用功能unset也无法删除
[userwin@MiWiFi-R3L-srv ~]$ unset c
-bash: unset: c: 无法反设定: 只读 variable
[userwin@MiWiFi-R3L-srv ~]$ ary[0]=a1
[userwin@MiWiFi-R3L-srv ~]$ ary[1]=a2
[userwin@MiWiFi-R3L-srv ~]$ ary[2]=a3
[userwin@MiWiFi-R3L-srv ~]$ declare -a ary
[userwin@MiWiFi-R3L-srv ~]$ echo $ary
a1
# 下面是错误示范,输出是不对的
[userwin@MiWiFi-R3L-srv ~]$ echo $ary[1]
a1[1]
[userwin@MiWiFi-R3L-srv ~]$ echo ${ary[1]}
a2
[userwin@MiWiFi-R3L-srv ~]$ echo ${ary[2]}
a3
[userwin@MiWiFi-R3L-srv ~]$ echo ${ary[*]}
a1 a2 a3
[userwin@MiWiFi-R3L-srv ~]$ echo aa
aa
[userwin@MiWiFi-R3L-srv ~]$ echo $a
100
[userwin@MiWiFi-R3L-srv ~]$ echo $b
50
[userwin@MiWiFi-R3L-srv ~]$ d=$(expr $a+$b)
[userwin@MiWiFi-R3L-srv ~]$ echo $d
100+50
#注意 + 左右必须有空格
[userwin@MiWiFi-R3L-srv ~]$ d=$(expr $a + $b)
[userwin@MiWiFi-R3L-srv ~]$ echo $d
150
[userwin@MiWiFi-R3L-srv ~]$ let a++
[userwin@MiWiFi-R3L-srv ~]$ echo $a
101
[userwin@MiWiFi-R3L-srv ~]$ let b--
[userwin@MiWiFi-R3L-srv ~]$ echo $b
49
[userwin@MiWiFi-R3L-srv ~]$ let a+=5
[userwin@MiWiFi-R3L-srv ~]$ echo $a
106
[userwin@MiWiFi-R3L-srv ~]$ let b-=5
[userwin@MiWiFi-R3L-srv ~]$ echo $b
44
[userwin@MiWiFi-R3L-srv ~]$ let e=$a+$b
[userwin@MiWiFi-R3L-srv ~]$ echo $e
150
[userwin@MiWiFi-R3L-srv ~]$ f=$[a+b]
[userwin@MiWiFi-R3L-srv ~]$ echo $f
150
[userwin@MiWiFi-R3L-srv ~]$ f=$[f+1]
[userwin@MiWiFi-R3L-srv ~]$ echo $f
151
[userwin@MiWiFi-R3L-srv ~]$ f=$[f-1]
[userwin@MiWiFi-R3L-srv ~]$ echo $f
150
[userwin@MiWiFi-R3L-srv ~]$ echo $(( 13 % 3 ))
1
优先级越大;数值越高。
只要把你要计算内容放入 $[] 或 $(())中;你就不用在考虑优先级了
[userwin@MiWiFi-R3L-srv ~]$ aa=$[(10+20)/10%2]
[userwin@MiWiFi-R3L-srv ~]$ echo $aa
1
[userwin@MiWiFi-R3L-srv ~]$ bb=$(((10+20)/10%2))
[userwin@MiWiFi-R3L-srv ~]$ echo $bb
1
倘若此文对你有帮助,点赞,评论,转发。谢谢
我醉欲眠卿且去,明朝有意抱琴来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。