阅读量:
137
初次接触Linux的学习笔记,部分作手册自查使用。如有错误或遗漏还请海涵,可评论或邮箱联系。
最后修改时间:2020-03-14 09:37:23 星期六
一、declare命令
1.1 declare作用
declare [+/-] [选项] 变量名:声明变量类型
-:给变量设定类型
+:取消变量的类型
-a:声明成数组型
-i:声明成整数型
-x:声明成环境变量
-r:声明成只读变量
-p:显示指定指定变量的被声明类型
1.2 声明整型变量
aa=11
bb=22
cc=$aa+$bb
echo $cc # 11+22
declare -i cc=$aa+$bb # 将cc声明成整型后,在赋值过程中会自动把后面的变量值视为整型来运算
echo $cc # 33
declare -p cc # declare -i cc="33"
1.3 声明数组变量
movie[0]=zp # 定义movie数组,并给下标0赋值
movie[1]=tp
declare -a movie[2]=live # 作用完全等同于直接写movie[2]=live
# 直接调用数组名,默认为movie[0]
echo ${movie} # zp
# 正常调用
echo ${movie[2]} # live
# 调用数组内全部值
echo ${movie[*]} # zp tp live
1.4 声明环境变量
declare -x 变量名=变量值:作用同export
注:export是一个简略命令,实际上执行的也是declare -x命令
1.5 声明只读变量
declare -r 变量名:给变量赋只读属性
注:只读属性会让变量不可修改,不可删除,甚至不能取消只读属性。但只要不写入系统配置文件,重启即会消失。
二、数值运算
2.1 方法一:declare命令
使用declare -i命令
aa=11
bb=22
declare -i cc=$aa+$bb # 将cc声明成整型后,在赋值过程中会自动把后面的变量值视为整型来运算
echo $cc # 33
2.2 方法二:expr或let数值运算工具
aa=11
bb=22
dd=$(expr $aa + $bb) # 注意,"+"左右两侧必须有空格!
echo $dd # 33
注:"+"号左右两侧必须有空格!
2.3 方法三:使用$系列命令
$((运算式))或$[运算式]
注:三种方法里,推荐使用$((运算式))这种
aa=11
bb=22
ff=$(($aa+$bb)) # ehco ff:33
gg=$[$aa+$bb] # ehco gg:33
三、运算符及优先级汇总
优先级
运算符
说明
13
-, +
单目负,单目正(不是加减)
12
!, ~
逻辑非,按位取反或补码
11
*, /, %
乘,除,取余
10
+, -
加,减
9
<>
按位左移,按位右移
8
<=, >=,
小于等于,大于等于,小于,大于
7
==, !=
等于,不等于
6
&
按位与
5
^
按位异或
4
|
按位或
3
&&
逻辑与
2
||
逻辑或
1
=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=
赋值,运算并赋值
注:不记优先级,加括号。有运算符时查表即可
四、变量测试
变量置换方式
变量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
注:使用测试语句可以用简单的语句实现对变量y的测试,可能会使脚本效率更高。但逻辑上会变的复杂,在一般的情景下不推荐使用
unset y # 删除变量y
x=${y-2} # 使用表格中第一个置换方式,此时y没有设置,因此x=新值
echo $x # 2
y=""
x=${y-2} # 使用表格中第一个置换方式,此时y值为空,因此x为空
echo $x # 显示空