Shell编程之shell运算符
编辑
889
2019-06-16
Shell编程之shell运算符
Shell变量的缺点
- shell变量是弱类型
- 默认是字符串类型
declare命令
语法: declare [+/-] [选项] 变量名
-
-
: 给变量设定类型属性 -
+
: 取消变量的类型属性 -
-a
: 将变量声明为数组型 -
-i
: 将变量声明为整数型(integer) -
-x
: 将变量声明为环境变量 -
-r
: 将变量声明为只读变量 -
-p
: 显示指定变量的被声明的类型
#给aa和bb赋值
misty@ubuntu:~/MyFile/test$ aa=11
misty@ubuntu:~/MyFile/test$ bb=22
misty@ubuntu:~/MyFile/test$ cc=$aa+$bb
misty@ubuntu:~/MyFile/test$ echo $cc
11+22
# 加上`-i`自动将运算的值转换成字符型
#声明cc为整数,其值为aa bb之和
misty@ubuntu:~/MyFile/test$ declare -i cc=$aa+$bb
misty@ubuntu:~/MyFile/test$ echo $cc
33
#查看被声明变量的类型
misty@ubuntu:~/MyFile/test$ declare -p cc
declare -i cc="33"
声明数组变量
#定义数组
misty@ubuntu:~/MyFile/test$ arr[0]=a
misty@ubuntu:~/MyFile/test$ arr[1]=b
misty@ubuntu:~/MyFile/test$ declare -a arr[2]=cc
#查看数组
misty@ubuntu:~/MyFile/test$ echo ${arr}
a
misty@ubuntu:~/MyFile/test$ echo ${arr[2]}
cc
misty@ubuntu:~/MyFile/test$ echo ${arr[*]}
a b cc
声明环境变量
语法:declare -x text=123
和export作用类似,但其实是declare命令的作用
声明变量为只读属性
语法:`declare -r test` ,给test赋予只读属性,但是请注意只读属性会让变量不能修改不能删除,甚至不能取消只读属性
#临时生效重启即可删除,操作比较麻烦,但是不要写在环境变量中或者开机自动执行的程序中,不然需要修改环境变量配置文件
misty@ubuntu:~/MyFile/test$ declare -r test
misty@ubuntu:~/MyFile/test$ declare -p test
declare -r test
misty@ubuntu:~/MyFile/test$ unset test
bash: unset: test: 无法取消设定: 只读 variable
misty@ubuntu:~/MyFile/test$ declare +r test
bash: declare: test: 只读变量
数值运算的方法
方法一:declare -i cc = $aa+$bb
方法二: dd=$(expr $aa + $bb)
,dd的值是aa和bb的和,
注意
+
两侧必须有空格
方法三:$((运算式))
或$[运算式]
misty@ubuntu:~/MyFile/test$ aa=11
misty@ubuntu:~/MyFile/test$ bb=22
misty@ubuntu:~/MyFile/test$ ff=$(($aa+$bb))
misty@ubuntu:~/MyFile/test$ echo $ff
33
misty@ubuntu:~/MyFile/test$ gg=$[$aa+$bb]
misty@ubuntu:~/MyFile/test$ echo $gg
33
注意这种方式运算符中间加不加小括号都是ok的
运算符
- 优先级高的先执行,优先级低的后执行
- 优先级和运算的优先级一样,同其他程序是一样的
#逻辑与的运算只有相与的两边都是1,与的结果才是1,否则与的结果是0
misty@ubuntu:~/MyFile/test$ declare cc=$((1&&0))
misty@ubuntu:~/MyFile/test$ echo $cc
0
变量测试
通用性不高,仅仅适用于shell,可以用其他的方式替代,了解即可,可以用但是没必要
![img](https://gitee.com/iMist/Linux/raw/master/image2/image48.png)
shell脚本是帮助linux管理人员进行系统的管理的,对性能的要求不高,但是需要逻辑清晰
#删除变量y,确保不存在
misty@ubuntu:~/MyFile/test$ unset y
#进行测试
misty@ubuntu:~/MyFile/test$ x=${y-2}
misty@ubuntu:~/MyFile/test$ echo $x
2
#因为y不存在所以值是x=new
#y值赋值为空
misty@ubuntu:~/MyFile/test$ y=""
misty@ubuntu:~/MyFile/test$ x=${y-2}
misty@ubuntu:~/MyFile/test$ echo $x
misty@ubuntu:~/MyFile/test$
#因为y值为空所以x为空
#y值为1
misty@ubuntu:~/MyFile/test$ y=1
misty@ubuntu:~/MyFile/test$ x=${y-2}
misty@ubuntu:~/MyFile/test$ echo $x
1
#x=$y
运算符小记
[] 测试语句
() 作为运算符,里面通常放语句
(()) 运算式用于数字计算
$() 用于表达式
- 0
- 0
-
分享