写在前面的话:
写博客不是一时兴起,思考了好久,终于动手去做了,自己经常也写一些笔记,我就在想,为什么不把这些笔记写到网上呢,这样就方便了分享和交流,现在在教shell编程,云计算基础,网络基础,思科路由与交换,windows server2008,云平台的搭建与管理,自己也在自学python,openstack,因此,以后会有越来越多的文章,但大多数都是围绕网络—云计算—python这三个 细分专业进行。当然云计算中也有很多分支,其中的基础部分和各种服务搭建,数据库,集群,云部署,大数据一些相关的文章也会写出来。好了,最后一句话 送给 自己:
- 你可以不完美,但是不可以不努力。
开始正题:declare 命令指定变量的类型
- 首先这是一个bash的内部命令
- 其次可以用来声明和修改变量的属性
- 补充个知识点,它与typeset命令的用法和用途是一样一样的
一下在掌握两个命令,赚到了 , 哈哈!
第一种用法:
使用-r 选项,将变量定义为只读变量,与readonly一样
[root@xieqc shell]# declare -r var=1
[1]+ 完成 sleep 10
[root@xieqc shell]# var=2
bash: var: 只读变量
[root@xieqc shell]# unset var
bash: unset: var: 无法反设定: 只读 variable
//可以看到变成了只读变量,至于怎么变回来......自己研究研究吧
第二种用法:
使用 -i 选项,将变量定义为整数型变量
什么意思呢,就是说赋予这种类型的变量只能是整数,否则都会被转成整数值
看个栗子:
[root@xieqc shell]# declare -i number
[root@xieqc shell]# number=1
[root@xieqc shell]# echo "this number is $number"
this number is 1
[root@xieqc shell]# number=one
[root@xieqc shell]# echo "this number is $number"
this number is 0
[root@xieqc shell]# number=9/2
[root@xieqc shell]# echo "this number is $number"
this number is 4
//很清楚了哈,非数字类型的,变成了0,为什么?因为不是数字,相当于木有赋值
第三种用法:
使用-p选项 ,显示指定变量的属性和值
不确定一个变量的是否被定义的时候可以用这个 选型。
数组变量
- 一个变量包含多个值,就是数组变量
- 特别注意的是,数组变量是从0开始计数的
直接上栗子吧:
[root@xieqc shell]# linux=('debian' 'Redhat' 'Sure' 'Fedora')
//赋值可以这个样子......
[root@xieqc shell]# echo ${linux[1]}
Redhat
[root@xieqc shell]# echo ${linux[0]}
debian
//调用的时候,是这个样子,中括号里面写数字,正整数哈,从0开始计数。
[root@xieqc shell]# echo ${linux[@]}
debian Redhat Sure Fedora
//显示所有内容,@和* 都可以
[root@xieqc shell]# linux[4]=CentOS
[root@xieqc shell]# echo ${linux[@]}
debian Redhat Sure Fedora CentOS
//最最最关键的是,还可以继续往下赋值,添加数组变量的值!
怎么取消呢???
- unset 变量名
- 直接干掉!不解释!
算术运算
- 没什么解释的,就是算个数,计算器 一样,来看一下怎么用:
首先来看一下都有哪些运算符号: - 求幂运算符 **
[root@xieqc shell]# let var1=5**2
[root@xieqc shell]# echo $var1
25
- 求余运算符 %
[root@xieqc shell]# let var1=9%2
[root@xieqc shell]# echo $var1
1
- 相加赋值运算符+=
[root@xieqc shell]# let var1+=10
[root@xieqc shell]# echo $var1
11
- 相乘赋值运算符:
[root@xieqc shell]# let var1*=5
[root@xieqc shell]# echo $var1
55
上面的栗子很清楚了。
- 逻辑与 && 和逻辑或 || 运算符:
[root@xieqc shell]# echo $(( 2 && 1 ))
1
[root@xieqc shell]# echo $(( 2 && 0 ))
0
[root@xieqc shell]# echo $(( 2 || 1 ))
1
[root@xieqc shell]# echo $(( 2 || 0 ))
1
[root@xieqc shell]# echo $(( 0 || 0 ))
0
//解释一下,估计跟我一样,一开始都看蒙了
//&& 和的关系,只要一方为0,输出结果为即为0,毕竟0和谁在一起都是0
// || 或的关系,只有两个都为0,结果才是0,没有谁离不开谁,或就是最好的解释了哈