一、基本語法
在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/zh-hant/n/289093.html