(五)shell变量声明和使用

10:Shell 的运算符

(1)数值运算的方法

那如果我需要进行数值运算,可以采用以下三种方法中的任意一种:使用 declare 声明变量类型,既然所有变量的默认类型是字符串型,那么只要我们把变量声明为整数型不就可以运算了吗?使用declare 命令就可以实现声明变量的类型。命令如下:

[root@localhost ~]# declare [+/-][选项]

变量名选项:

-: 给变量设定类型属性

+: 取消变量的类型属性

-a:  将变量声明为数组型

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

-r:  讲变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值,也不能删除变量,甚至不能通过+r 取消只读属性.

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

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

 

例子1:声明变量类型进行运算

[root@localhost ~]# aa=11

[root@localhost ~]# bb=22

#给变量 aa 和 bb 赋值

[root@localhost ~]# declare -i cc=$aa+$bb

#声明变量 cc 的类型是整数型,它的值是 aa 和 bb 的和

[root@localhost ~]# echo $cc

33

#这下终于可以相加了

 

例子 2:数组变量类型

注意数组的下标是从 0 开始的,在调用数组值时,需要使用${数组[下标]}的方式来读取。

[root@localhost ~]# name[0]="li "

 [root@localhost ~]# name[1]="ming"

 [root@localhost ~]# name[2]=" ang"

 [root@localhost ~]# echo ${name}

li

#输出数组的内容,如果只写数组名,那么只会输出第一个下标变量

[root@localhost ~]# echo ${name[*]}

li ming ang

 

例子 3: 环境变量

我们其实也可以使用 declare 命令把变量声明为环境变量,和 export 命令的作用是一样的:

[root@localhost ~]# declare -x test=123

#把变量 test 声明为环境变量

 

例子 4:只读属性

注意一旦给变量设定了只读属性,那么这个变量既不能修改变量的值,也不能删除变量,甚至不能使用“+r”选项取消只读属性。命令如下:

[root@localhost ~]# declare -r test

#给 test 赋予只读属性

[root@localhost ~]# test=456

-bash: test: readonly variable

#test 变量的值就不能修改了

[root@localhost ~]# declare +r test

-bash: declare: test: readonly variable

#也不能取消只读属性

[root@localhost ~]# unset test

-bash: unset: test: cannot unset: readonly variable

#也不能删除变量.

 

 

例子 5:查询变量属性和取消变量属性

变量属性的查询使用“-p”选项,变量属性的取消使用“+”选项。命令如下:

[root@localhost ~]# declare -p cc

declare -i cc="33"

#cc 变量是 int 型

[root@localhost ~]# declare -p name

declare -a name='([0]=" li " [1]="li " [2]="ming")'

#name 变量是数组型

[root@localhost ~]# declare -p test

declare -rx test="123"

#test 变量是环境变量和只读变量

[root@localhost ~]# declare +x test

#取消 test 变量的环境变量属性

[root@localhost ~]# declare -p test

declare -r test="123"

#注意,只读变量属性是不能取消的.

 

例子6:shell运算

Shell 进行算运算:

(1)$(( $num1 + $num2 ))

(2)declare –i声明变量是整形

(3)dd=$(expr $aa + $bb)

#dd 的值是 aa 和 bb 的和。注意“+”号左右两侧必须有空格

(4)let ee=$aa+$bb 

(5)gg=$[ .

+$bb ]

 

Shell运算符:

13  -, +  单目负、单目正

12  !, ~  逻辑非、按位取反或补码

11  * , / , %  乘、除、取模

10  +, -  加、减

9  << , >>  按位左移、按位右移

8  < =, > =, < , >  小于或等于、大于或等于、小于、大于

7  == , !=  等于、不等于

/*    &  按位与/

5  ^  按位异或

4  |  按位或

3  &&  逻辑与

2  ||  逻辑或

1    =,+=,-=,*=,/=,%=,&=, ^=, |=, <<=, >>=  赋值、运算且赋

基本上:常用的四则运算,&&,||,

异或运算:二进制运算,& 有0为0 ,| 有1为1

 

变量的测试与内容置换:

测试变量是否有数值:

情况:

(1)变量没有声明,echo输出是空。 set –u echo $name没有会报错,程序的识别需要用到shell自带的测试

(2)变量声明 name=””为空

x=${y-新值}  x=新值  x 为空  x=$y

如果 y没有声明 x=new

如果 y=”” x=空

如果 y=123 x=123

posted @ 2019-10-13 22:22  INSTANCE_SELF  阅读(1349)  评论(0编辑  收藏  举报