3.shell中的字符串操作

shell中字符串使用单、双引号均可:

name='andy'
id="haha"
echo $name
echo $id
1.字符串拼接:

⚠️方式一:

#!/bin/bash
name='andy'
id="haha"
#可以缩写为total="$name$id"
total="${name}${id}"
echo $total

⚠️方式二:

#!/bin/bash
name='andy'
id="haha"
total=" 姓名:$name 身份证: $id"
echo $total

2.获取字符串长度:

语法:${#变量名}
例如:

#!/bin/bash
name='andy'
echo ${#name}
#输出结果是4

3.字符串提取子串:

一:语法${string:position}
$string中,从$position位置之后开始提取子串:

name="abcABC123ABCabcde"
subname=${name:3}
echo ${subname}
#输出结果ABC123ABCabcde

二:语法${string:position:length}
$string中,从$position位置之后开始提取$length长度的子串

${NAME:3:6}

4.字符串删除:

⚠️从左到右删除
方式一:
${string#substring正则表达式}
从变量$string开头开始删除最短匹配$substring子串

name="abcABC123ABCabcde"
subname=${name#a*c}
echo ${subname}

方式二:
${string##substring正则表达式}
从变量$string开头开始删除最长匹配$sunstring子串

name="abcABC123ABCabcde"
subname=${name##a*c}
echo ${subname}

⚠️从右到左删除
${string%substring}
从变量$string结尾开始删除最短匹配$substring子串

${string%%substring}
从变量$string结尾开始删除最长匹配$substring子串

注意:

在进行#或##匹配时,string的首字符必须是被删除子串substring的第一个字符,不然无法匹配删除;
在进行%或者%%匹配时,string的最后一个字符必须是被删除子串substring的最后一个字符,不然无法进行删除操作;


5.字符串替换

${parameter/parttern/string}
string来替换第一个匹配的pattern

${parameter/#parttern/string}
从开头匹配parameter变量中的pattern,匹配上后就用string来替换匹配的pattern

${parameter/%pattern/string}
从结尾开始匹配parameter变量中的pattern,匹配上后就用string替换匹配的pattern

${parameter//pattern/string}
string来替换parameter变量中所有匹配的pattern

你可能感兴趣的:(3.shell中的字符串操作)