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