Linux基础学习——Shell基础——Bash变量—数值运算与运算符和变量测试与内容替换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxllynu/article/details/85207724

一、数值运算与运算符:

思考引入:

[root@localhost sh]# aa=11
[root@localhost sh]# bb=22
[root@localhost sh]# cc=$aa+$bb
[root@localhost sh]# echo $cc
11+22

如上:Linux中,shell中的变量类型,都是字符串类型,在此表示加号连接了两个字符串,然后把该字符串赋给了cc,于是如上

1、declare 声明变量类型

[root@localhost ~]# declare 【+/-】【选项】变量名

选项:

    -: 给变量设定类型属性

    +:取消变量的类型属性

    -i :将变量声明为整数型(integer)

    -x :将变量声明为环境变量

    -p :显示指定变量的被声明的类型

[root@localhost sh]# aa=11
[root@localhost sh]# bb=22
[root@localhost sh]# cc=$aa+$bb
[root@localhost sh]# echo $cc
11+22
[root@localhost sh]# declare -p aa
declare -- aa="11"
[root@localhost sh]# export aa    #习惯于用export 将某变量设置为环境变量,或者说是为其添加-x属性
[root@localhost sh]# declare -p aa
declare -x aa="11"
[root@localhost sh]# 

2、数值运算——

方法1:

[root@localhost sh]# aa=11
[root@localhost sh]# bb=22
#如上为给变量赋值方法
[root@localhost sh]# declare-i cc=$aa+$bb
-bash: declare-i: command not found
[root@localhost sh]# declare -i cc=$aa+$bb
[root@localhost sh]# echo $cc
33

方法2:expr 或let 数值运算工具

[root@localhost sh]# aa=11
[root@localhost sh]# bb=22
[root@localhost sh]# dd=$(expr $aa+$bb)
[root@localhost sh]# echo $dd
11+22
[root@localhost sh]# aa=11
[root@localhost sh]# bb=22
[root@localhost sh]# dd=$(expr $aa + $bb)
[root@localhost sh]# echo $dd
33

特别注意:注意“ + ”号左右的空格!!!

方法3:“$((运算式))” 或 “$[运算式]”

[root@localhost sh]# aa=11
[root@localhost sh]# bb=22
[root@localhost sh]# ff=$(($aa+$bb))
[root@localhost sh]# echo $ff
33
[root@localhost sh]# gg=$[$aa+$bb]
[root@localhost sh]# echo gg
gg
[root@localhost sh]# echo $gg
33
[root@localhost sh]# 

建议使用第三种,比较方便

3、运算符:

优先级 运算符 说明
13 -,+ 单目负、单目正
12 !,~ 逻辑非、按位取反或补码
11 *,/,%

乘、除、取模

10 +,- 加、减
9 << ,>>

按位左移、按位右移

8 <=  ,>= ,< ,> 小于或等于、大于或等于、小于、大于
7 == ,!= 等于、不等于
6 & 按位与
5 ^ 按位异或
4 | 按位或
3 && 逻辑与
2 || 逻辑或
1 =,+=,=,*=,/=,&=,^=,!=,<<=,>>= 赋值、运算且赋值
[root@localhost sh]# aa=$(((11+3)*3/2))
#虽然乘和除的优先级高于加,但是通过小括号可以调整运算优先级

[root@localhost sh]# echo $aa
21
[root@localhost sh]# bb=$(( 14%3))
#14不能被3整除,余数是2
[root@localhost sh]# echo $bb
2
[root@localhost sh]# cc=$(( 1 && 0))
#逻辑与运算只有想与的两边都是1时结果才是1,否则与的结果是0
[root@localhost sh]# echo $cc
0

注意原则:先写$() 括起来,内部是什么和正常的数学运算都是一致的

二、变量测试与内容替换

变量置换方式 变量y没有设置 变量y为空值 变量y设置值
x=${y-新值} x=新值 x为空 x=$y
x=${y:-新值} x=新值 x=新值 x=$y
x=${y+新值} x为空 x=新值 x=新值
x=${y:+新值} x为空 x为空 x=新值
x=${y=新值}

x=新值

y=新值

x为空

y值不变

x=$y

y值不变

x=${y:=新值}

x=新值

y=新值

x=新值

y=新值

x=$y

y值不变

x=${y?新值} 新值输出到标准错误输出(就是屏幕) x为空 x=$y
x=${y:?新值} 新值输出到标准错误输出(就是屏幕) 新值输出到标准错误输出(就是屏幕) x=$y

注:上述内容不用背,要作为手册放到易查的位置,用到时查一下就好,但首先要能看懂表格含义。

示例一、测试x=${y-新值}

[root@localhost ~]# unset y

# 删除变量y

[root@localhost ~]# x=${ y-new}

#进行测试

[root@localhost ~]# echo $x

new

#因为变量y不存在,所以x=new

[root@localhost ~]# y=""

[root@localhost ~]# x=${ y-new}

[root@localhost ~]#echo $x

如上,测试第一行

[root@localhost sh]# unset y   #表示不管是否有Y,用此句表示删除y,保证确定不存在y变量
[root@localhost sh]# x=${y-new}  #new 可以是其他任意的变量
[root@localhost sh]# echo $x   #如果打印出来为new,则表示y变量不存在
new
[root@localhost sh]# y=""
[root@localhost sh]# x=${y-new}
[root@localhost sh]# echo $x

[root@localhost sh]# 
[root@localhost sh]# y=old
[root@localhost sh]# x=${y-new}
[root@localhost sh]# echo $x
old

变量测试,就是用来判断某个变量是否存在,是否为空,等,用于shell编程中,

用于计算机系统自己判断某个变量的状态

实例二:第二行第一个判断

[root@localhost sh]# y=""
[root@localhost sh]# x=${y:-new}
[root@localhost sh]# echo $x
new
[root@localhost sh]# 

猜你喜欢

转载自blog.csdn.net/zxllynu/article/details/85207724
今日推荐