文章目录
前言
参考视频:shell编程之运算符
参考网站:菜鸟教程
shell编程的变量笔记:shell编程之变量的笔记
一.概述及declare命令
1.shell变量的缺点
- 弱类型
- 默认字符串类型
2.declare命令
(1)declare声明变量类型
declare [+/-][选项] 变量名
选项:
- :给变量设定类型属性
+ :取消变量的类型属性
-a : 将变量声明为数组型
-i : 将变量声明为整数型 (integer)
-x : 将变量声明为环境变量
-r : 将变量声明为只读变量
-p : 显示指定变量的被声明的类型
把变量声明为整数型
[root@Test ~]# aa=11
[root@Test ~]# bb=22
[root@Test ~]# declare -i cc=$aa+$bb
[root@Test ~]# echo $cc
33
声明数组变量
#定义数组
[root@Test ~]# arr[0]=2
[root@Test ~]# arr[1]=3
[root@Test ~]# declare -a arr[2]=44
#查看数组,没有下标的话默认是第一个元素的值,${arr[2]}表示调用数组下标为2的值,${arr[*]}表示调用数组的所有值
[root@Test ~]# echo ${arr}
2
[root@Test ~]# echo ${arr[2]}
44
[root@Test ~]# echo ${arr[*]}
2 3 44
因为shell是弱类型的,变量有下表就说明它是数组类型,比如“arr[0]=2”;数组的调用跟普通变量不一样,调用数组是“${变量名}”,如果没有下标的话默认是数组的第一个元素,而普通变量的是“$变量名”
声明环境变量
#和export作用相似,但其实是declare命令的作用,可以查看变量的属性就知道了
[root@Test ~]# declare -x test=123
[root@Test ~]# echo $test
123
声明只读变量
[root@Test ~]# declare -r readonly_test=222
[root@Test ~]# echo $readonly_test
222
[root@Test ~]# readonly_test=111
-bash: readonly_test: 只读变量
[root@Test ~]# unset readonly_test
-bash: unset: readonly_test: 无法反设定: 只读 variable
[root@Test ~]# declare +r readonly_test
-bash: declare: readonly_test: 只读变量
给变量赋予只读属性,但是请注意只读属性会让变量不能修改、不能删除,甚至不能取消只读属性;慎用只读变量
查询变量的属性
#查询所有变量的属性
[root@Test ~]# declare -p
#查询指定变量的属性
[root@Test ~]# declare -p test
declare -x test="123"
二.数值运算方法
1.数值运算方法1
[root@Test ~]# aa=11
[root@Test ~]# bb=22
[root@Test ~]# declare -i cc=$aa+$bb
[root@Test ~]# echo $cc
33
2.数值运算方法2
expr 或let数值运算工具
[root@Test ~]# aa=11
[root@Test ~]# bb=22
#expr,注意:“+”号左右两侧必须有空格,不然不做运算;expr与变量之间有空格
[root@Test ~]# dd=$(expr $aa + $bb)
[root@Test ~]# echo $dd
33
[root@Test ~]# dd=$(expr $aa+$bb)
[root@Test ~]# echo $dd
11+22
[root@Test ~]# dd=$(expr$aa+$bb)
-bash: expr11+22: 未找到命令
#let
[root@Test ~]# let_test=1
[root@Test ~]# let let_test=$let_test+1
[root@Test ~]# echo $let_test
2
1.let :用来执行算数运算和数值表达式测试;
2.expr可以用来做加,减,乘,除,取余 等各种运算:表达式和运算符之间要有空格;完整的表达式要使用反引号括起来或$()
3.数值运算方法3
“$((运算式))”或“$[运算式]”
[root@Test ~]# aa=11
[root@Test ~]# bb=22
[root@Test ~]# ff=$(($aa+$bb))
[root@Test ~]# echo $ff
33
[root@Test ~]# gg=$[$aa+$bb]
[root@Test ~]# echo $gg
33
1.不需要加空格,建议使用这种方法;
2.((运算式)):支持整数型的计算,不支持浮点型和字符串等;支持逻辑判断,表达式为真则为1,假则为0;支持三目运算符,但三目运算符最终返回结果需要为整数型的数字
4.运算符优先级
(1)优先级
三.变量测试
1.变量测试图
了解即可,用到再查表;仅对shell生效;程序优化时可以用