Shell脚本学习-变量子串

变量子串:

man bash,然后搜索:Parameter Expansion。

Shell脚本学习-变量子串_第1张图片

参数拓展

$字符引进、提出了参数拓展、命令替换和数字替换。变量名或标识被大括号包围才能够被拓展。

我们可以记住一个表:

序号 表达式 说明
1 ${parameter} 返回变量$parameter的内容。
2 ${#parameter} 返回变量$parameter内容的长度,按字符。
3 ${parameter:offset} 在变量$parameter中,从位置offset之后开始提取子串到结尾。
4 ${parameter:offset:length} 在变量$parameter中,从位置offset开始提取长度为length的子串。
5 ${parameter#word} 从变量$parameter开头开始删除最短匹配的word子串。
6 ${parameter$$word} 从变量$parameter开头开始删除最长匹配的word子串。
7 ${parameter%word} 从变量$parameter结尾开始删除最短匹配的word子串。
8 ${parameter%%word} 从变量$parameter结尾开始删除最长匹配的word子串。
9 ${parameter/patten/string} 使用string替换第一个匹配的pattern。
10 ${parameter//pattern/string} 使用string替换所有的匹配的pattern。

 

示例1:

[root@vm1 ~]# NAME="changchunhua"
[root@vm1 ~]# echo ${NAME}
changchunhua
[root@vm1 ~]# echo $NAME
changchunhua

示例2:

[root@vm1 ~]# echo ${#NAME}
12

说明:打印变量值的长度。这种方式效率是比较高的,在效率要求高的场合尽量多使用。

当然,日常工作中的脚本计算,可以根据自己擅长的或者易用的程度去选择。

示例3:

[root@vm1 ~]# echo ${NAME:5}
chunhua

说明:从第5个字符后面开始截取,默认是截取后面字符的全部。第5个字符不包含在内。也可以理解为将前面5个字符进行删除。

示例4:

[root@vm1 ~]# echo ${NAME:5:4}
chun

说明:4表示的是截取4个字符。

你可能感兴趣的:(Shell,linux)