Shell實現(xiàn)字符串處理的方法詳解
大小寫轉(zhuǎn)化
# 把變量中的第一個字符換成大寫
${test^}
# 把變量中的所有小寫字母,全部替換為大寫
${test^^}
# 把變量中的第一個字符換成小寫
${test,}
# 把變量中的所有大寫字母,全部替換為小寫
${test,,}
示例
#!/bin/bash
# script file name is test.sh
test="abcDEF"
echo "test^=${test^}"
echo "test^^=${test^^}"
echo "test,=${test,}"
echo "test,,=${test,,}"

獲取字符串長度
${#string}
替換
整體替換
# 若變量var為空,則用string來替換此處的值,最常用。
${var:-string}
# 若變量var為空,則用string來替換此處的值,把string賦給變量var。
${var:=string}
# 若變量var不為空,則用string來替換此處的值。
${var:+string}
# 若變量var不為空,則用string來替換此處的值;
# 若變量var為空,則把string輸出到標準錯誤中,并從腳本中退出。
# 常用利用此特性來檢查是否設(shè)置了變量的值。
${var:?string}
部分替換
# 只替換第1個子串
${var/old/new}
# 替換全部子串
${var//old/new}
截取
# 從string字符串的左邊第start個字符開始(不包含第start個字符),向右截取到最后,start從0開始;
${string:start}
# 從string字符串的左邊第start個字符開始(不包含第start個字符),向右截取length個字符;
${string:start:length}
# 從string字符串的右邊第start個字符開始(包含第start個字符),向右截取到最后,start從1開始;
${string:0-start}
# 從string字符串的右邊第start個字符開始(包含第start個字符),向右截取length個字符,start從1開始;
${string:0-start:length}
# 從string字符串左邊第一次出現(xiàn)*chars的位置開始,截取*chars右邊的所有字符,不包含chars;
${string#*chars}
# 從string字符串左邊最后一次出現(xiàn)*chars的位置開始,截取*chars右邊的所有字符,不包含chars;
${string##*chars}
# 從string字符串右邊第一次出現(xiàn)chars*的位置開始,截取chars*左邊的所有字符,不包含chars;
${string%chars*}
# 從string字符串右邊最后一次出現(xiàn)chars*的位置開始,截取chars*左邊的所有字符,不包含chars;
${string%%*chars*}
示例
#!/bin/bash
# script file name is test.sh
url="https://blog.csdn.net/monarch91"
echo "url=${url}"
echo "url:8=${url:8}"
echo "url:8:4=${url:8:4}"
echo "url:0-8=${url:0-8}"
echo "url:0-8:4=${url:0-8:4}"
echo "url#*c=${url#*c}"
echo "url##*c=${url##*c}"
echo "url%c*=${url%c*}"
echo "url%%c*=${url%%c*}"

補充
當然,除了以上操作,Shell還有許多字符串操作,下面小編為大家整理了一些,需要的可以參考一下
字符串的拼接
str1=www
str2=bilibili
string1=$str1$str2 #中間不加別的,直接放一起
string2="$str1 $str2" #雙引號括住,中間可加任意字串
string3=$str1"..."$str2 #整體不加引號,若中間要出現(xiàn)別的字串需前后緊挨,且字串雙引號括住
string4="${str1}.${str2}.com" #也可以使用${}方式引用變量
echo $string1
echo $string2
echo $string3
echo $string4運行結(jié)果:
wwwbilibili
www bilibili
www...bilibili
www.bilibili.com
讀取字符串
$ echo ${abc-'ok'}
ok
$ echo $abc
$ echo ${abc='ok'}
ok
$ echo $abc
ok
$ var1=11;var2=12;var3=
$ echo ${!v@}
var1 var2 var
$ echo ${!v*}
var1 var2 var3
#${!varprefix*}與${!varprefix@}相似,可以通過變量名前綴字符,搜索已經(jīng)定義的變量,無論是否為空值。
字符串比較
[[ "a.txt" == a* ]] #邏輯真(pattern matching) [[ "a.txt" =~ .*\.txt ]] #邏輯真(regex matching) [[ "abc" == "abc" ]] #邏輯真(string comparision) [[ "11" < "2" ]] #邏輯真(string comparision),按 ascii 值比較
到此這篇關(guān)于Shell實現(xiàn)字符串處理的方法詳解的文章就介紹到這了,更多相關(guān)Shell字符串處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
bash shell命令行選項與修傳入?yún)?shù)處理
本文介紹了bash shell命令行參數(shù)與命令行選項的操作方法,有關(guān)shell 命令行參數(shù)的實例教程,有需要的朋友參考下。2014-04-04
Linux?Shell腳本多命令執(zhí)行邏輯的示例詳解
Linux?中可以使用分號";“、雙and號”&&“和雙豎線”||"來連接多個命令。根據(jù)場景的不同適當?shù)氖褂煤线m的符號,感興趣的小伙伴可以了解一下2022-10-10

