1.变量测试的用法
shell支持变量测试和默认赋值,当一个变量不存在的时候,可以默认给此变量进行赋值。变量测试和赋值有多种方式,常见的有四种情况
变量 | 含义 |
---|---|
${var:-word1} | 若var存在且非空,则值为$var; 若var未定义或为空值,则值为word1,但var的值不变 |
${var:=word2} | 若var存在且非空,则值为$var; 若var未定义或为空值,则值为word2,且var被赋值word2 |
${var:?word3} | 若var存在且非空,则值为$var; 若var未定义或为空值,则输出信息word3,并终止脚本 |
${var:+world4} | 若var存在且非空,则值为word4,否则返回空值,但var的值不变 |
看下面的操作过程,更能清晰的理解变量测试的含义
[root@localhost ~]# var=
[root@localhost ~]# echo ${var:-word1}
word1
[root@localhost ~]# echo "$var"
[root@localhost ~]# var=wen
[root@localhost ~]# echo ${var:-word1}
wen
[root@localhost ~]# var=
[root@localhost ~]# echo ${var:=word2}
word2
[root@localhost ~]# echo "$var"
word2
[root@localhost ~]# echo ${var:?word3}
word2
[root@localhost ~]# echo ${var:+word2}
word2
[root@localhost ~]# var=
[root@localhost ~]# echo ${var:+word4}
[root@localhost ~]# echo "$var"
[root@localhost ~]#
2.变量截取的用法
此外,shell还支持字符串的替换
字符变量 | 含义 |
---|---|
${#var} | 返回字符串变量var的长度 |
${var:m} | 返回${var}中从第m个字符之后的所有部分 |
${var:m:len} | 返回${var}中从第m个字符之后开始,长度为len的部分 |
${var#pattern} | 删除${var}中开头部分与pattern匹配的部分 |
${var%pattern} | 删除${var}中结尾部分与pattern匹配的部分 |
操作过程如下
[root@localhost ~]# var="shell kubernetes mysql"
[root@localhost ~]# echo ${#var}
22
[root@localhost ~]# echo ${var:3}
ll kubernetes mysql
[root@localhost ~]# echo ${var:3:5}
ll ku
[root@localhost ~]# echo ${var#k}
shell kubernetes mysql
[root@localhost ~]# echo ${var%k}
shell kubernetes mysql
3.字符串替换用法
字符变量 | 含义 |
---|---|
${var/old/new} | 用new替换$var中第一次出现的old |
${var//old/new} | 用new替换$var中所有的old(全局替换) |
${var/#old/new} | 用new替换${var}中开头部分与old匹配的部分 |
${var/%old/new} | 用new替换${var}中结尾部分与old匹配的部分 |
需要注意的是old中可以使用通配符。var可以是@或者*,表示对每个位置参数进行替换
[root@localhost ~]# var="shell kubernetes mysql"
[root@localhost ~]# echo ${var#l}
shell kubernetes mysql
[root@localhost ~]# echo ${var/e/i}
shill kubernetes mysql
[root@localhost ~]# echo ${var//e/i}
shill kubirnitis mysql
[root@localhost ~]# echo ${var/#ee/i}
shell kubernetes mysql
[root@localhost ~]# echo ${var/%ee/i}
shell kubernetes mysql
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。