美文网首页linux&shellLinux小推车
[LN_08] Shell编程-变量声明、运算符、变量测试

[LN_08] Shell编程-变量声明、运算符、变量测试

作者: Fighting_001 | 来源:发表于2019-02-05 00:08 被阅读90次

目录结构

一、declare命令
    1. 将变量声明为数值型
    2. 声明数组变量
    3. 声明环境变量
    4. 声明变量只读属性
    5. 查询变量的属性
二、数值运算的方法
    1. 加法
    2. 混合运算
三、变量测试

一、declare命令

Shell变量为弱类型,默认为字符串类型;若要参与运算,则需要声明变量类型

declare声明变量类型

declare [+/-] [选项] 变量名
选项:
-   给变量设定类型属性
+   给变量取消类型属性
-a  将变量声明为数组型
-i  将变量声明为整型(integer)
-x  将变量声明为环境变量
-r  将变量声明为只读变量
-p  显示指定变量的被声明类型

1. 将变量声明为数值型

# 给变量x、y赋值
x=11 y=22
# 声明变量z的类型为整型,其值为x与y的之和
declare -i z=$x+$y
# 输出变量z的值
echo $z

PS:以上不需要单独声明变量x、y的类型,其参与运算之后会转换为最终的运算值所设定的类型(如:整型)

2. 声明数组变量

一个变量里保存多个值,每个值对应有不同的下标进行识别

# 定义数组
stu[0]=Jack stu[1]=Caddy
declare -a stu[2]=Sunny
# 查看数组
echo ${stu}  # 调用第1个变量的值,下标=0,即stu[0]
echo ${stu[2]}
echo ${stu[*]}  # 调用数组变量中所有的值

3. 声明环境变量

# 方式1:
declare -x 变量名=变量值
# 方式2:
export 变量名=变量值

PS:以上方式1和方式2的作用相似,但实质都是调用declare命令

4. 声明变量只读属性

# 给变量赋予只读属性
declare -r 变量名

PS:只读属性,会让变量不能修改、不能删除,甚至不能取消只读属性(不建议对系统启动相关的程序作此操作

5. 查询变量的属性

# 查询所有变量的属性
declare -p
# 查询指定变量的属性
declare -p 变量名

二、数值运算的方法

运算符

优先级 运算符 说明
13 -、+ 単目负、単目正
12 !、~ 逻辑非、按位取反or补码
11 *、/、% 乘、除、取模
10 +、- 加、减
9 <<、>> 按位左移、按位右移
8 <=、>=、<、> 小于等于、大于等于
7 ==、!= 等于、不等于
6 & 按位与
5 ^ 按位异或
4 | 按位或
3 && 逻辑与
2 || 逻辑或
1 =、+=、*=、%=、&=、
^=、|=、<<=、>>=
赋值、运算且赋值

1. 加法

方法1:

# 给变量x、y赋值
x=11 y=22
# 声明变量z的类型为整型,其值为x与y的之和
declare -i z=$x+$y
# 输出变量z的值
echo $z

方法2:

x=11 y=22
# 以下"+"左右两侧必须有空格,否则会被当做字符串处理
z=$(expr $x + $y)
echo $z

方法3:

x=11 y=22
z1=$(($x+$y))
z2=$[$x+$y]
echo $z1 $z2

2. 混合运算

# 加减乘除联合运算
x=$(((1+6)*7/3-2))
# 取模运算
y=$((22/7))
# 逻辑与运算
z=$((1 && 0))
echo $x $y $z

三、变量测试

变量测试在脚本优化时使用

变量置换方式 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

【案例1】x=${y-新值}

# 删除变量y
unset y
# 进行测试
x=${y-2}
echo $x

变量y不存在,则x=新值

# 删除变量y
y=""
# 进行测试
x=${y-2}
echo $x

y为空值,则x为空;y设置值,则x=$y

【案例2】x=${y:?新值}

unset y
x=${y:?3}
y=""
x=${y:?3}
y=2
x=${y:?3}
echo $x

相关文章

网友评论

    本文标题:[LN_08] Shell编程-变量声明、运算符、变量测试

    本文链接:https://www.haomeiwen.com/subject/pkxmsqtx.html