目录
扩展变量
扩展变量的使用方法:
${变量:-word} |
如果变量值为空,则返回 word 字符串,如果不为空则返回变量本身的值 |
${变量:=word} | 如果变量值为空,则将 word 替换变量后并返回 |
${变量:?word} | 如果变量值为空,则 word 将当作 stderr 输出,否则输出变量的值 |
${变量:+word} | 如果变量值为空,则什么都不做,否则返回 word |
示例:
# ${变量:-word}
[root@openEuler ~]# name=lisi
[root@openEuler ~]# echo $name
lisi
[root@openEuler ~]# name1=${name:-wangwu}
[root@openEuler ~]# echo $name1
lisi
[root@openEuler ~]# unset name
[root@openEuler ~]# echo $name
[root@openEuler ~]# name1=${name:-wangwu}
[root@openEuler ~]# echo $name1
wangwu
# ${变量:=word}
[root@openEuler ~]# name=lisi
[root@openEuler ~]# echo $name
lisi
[root@openEuler ~]# name1=${name:=zhangsan}
[root@openEuler ~]# echo $name1
lisi
[root@openEuler ~]# unset name
[root@openEuler ~]# name1=${name:=zhangsan}
[root@openEuler ~]# echo $name
zhangsan
[root@openEuler ~]# echo $name1
zhangsan
# ${变量:?word}
[root@openEuler ~]# name=haha
[root@openEuler ~]# echo $name
haha
[root@openEuler ~]# name1=${name:?hehe}
[root@openEuler ~]# echo $name
haha
[root@openEuler ~]# echo $name1
haha
[root@openEuler ~]# unset name
[root@openEuler ~]# name1=${name:?hehe}
-bash: name: hehe
# ${变量:+word}
[root@openEuler ~]# name=xiaowang
[root@openEuler ~]# echo $name
xiaowang
[root@openEuler ~]# name1=${name:+xiaoli}
[root@openEuler ~]# echo $name
xiaowang
[root@openEuler ~]# echo $name1
xiaoli
[root@openEuler ~]# unset name
[root@openEuler ~]# name1=${name:+xiaoli}
[root@openEuler ~]# echo $name
[root@openEuler ~]# echo $name1
[root@openEuler ~]#
这四个一般用于对变量值的判断处理
实际案例:
判断变量的值,如果值为空则返回后面的字符信息
[root@openEuler ~]# echo $hana
[root@openEuler ~]# result=${hana:-haha}
[root@openEuler ~]# echo $result
haha
[root@openEuler ~]# hana="nihao"
[root@openEuler ~]# result=${hana:-haha}
[root@openEuler ~]# echo $result
nihao
变量的运算
在Shell中包含以下运算
算术运算 |
字符串运算符 |
文件测试运算符 |
关系运算 |
布尔运算 |
逻辑运算 |
对于原生的 bash 是不支持数字运算的,但是可以通过其他的命令来实现这个功能,例如 expr 命令
使用方式:
[root@openEuler ~]# a=1 + 2
-bash: +: command not found
[root@openEuler ~]# expr 1 + 3
4
[root@openEuler ~]# expr hello
hello
[root@openEuler ~]# expr length hello
5
注意:
在使用 expr 来计算时,在数字的中间使用运算符,但是运算符之间有