shell编程之运算符的笔记

前言

参考视频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生效;程序优化时可以用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值