一、基本语法
在shell脚本中,字符串截取是最常见的操作之一。字符串截取的基本语法如下:
${string: start :length}
其中,string为要截取的字符串,start为起始位置(从0开始计数),length为要截取的长度。
例如,要从字符串”hello world”中截取”w”这个字符,可以使用如下命令:
str="hello world" echo ${str:6:1} #输出w
如果要截取字符串的一部分,可以使用如下命令:
echo ${str:3} #输出lo world
如果要截取字符串的末尾,可以使用负数计数:
echo ${str: -5} #输出world
二、字符串长度
在进行字符串截取之前,我们通常需要先获取字符串的长度。获取字符串长度的命令如下:
${#string}
例如,要获取字符串”hello world”的长度,可以使用如下命令:
str="hello world" echo ${#str} #输出11
三、模式匹配
除了基本的字符串截取语法,shell还提供了模式匹配功能,可以轻松地匹配符合特定模式的字符串。模式匹配可以用于文件名、路径名、扩展名等场景。
模式匹配语法如下:
${string#substring} ${string##substring} ${string%substring} ${string%%substring}
– ${string#substring}
:从$string的开头截取掉最短的匹配substring的部分。
– ${string##substring}
:从$string的开头截取掉最长的匹配substring的部分。
– ${string%substring}
:从$string的末尾截取掉最短的匹配substring的部分。
– ${string%%substring}
:从$string的末尾截取掉最长的匹配substring的部分。
例如,要从字符串”/root/script/hello.sh”中获取文件名,可以使用如下命令:
str="/root/script/hello.sh" echo ${str##*/} #输出hello.sh
这个命令的含义是:从字符串的开头开始匹配,找到最后一个”/”,并且截取掉这个”/”及其前面的所有字符。
四、示例代码
以下是一个使用字符串截取、长度和模式匹配的示例代码,目的是从文件名中获取扩展名:
#!/bin/bash filename="hello.sh" echo "filename length: ${#filename}" #获取文件名和扩展名 basename=${filename%.*} extension=${filename##*.} echo "basename: $basename" echo "extension: $extension"
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/289093.html