Bash字符串也是一種數(shù)據(jù)類型,它用于表示文本而不是數(shù)字,它是一組可能還包含數(shù)字的字符的組合。
如果數(shù)字想要表示為字符串,那么需要程序員用引號(hào)將數(shù)字包起來(lái),以便Bash將數(shù)據(jù)視為字符串。
BASH對(duì)字符串的操作有很多方式,以下記錄了其中一些常用的用法。
1.字符串基本操作
字符串比較的命令有:
# 等于運(yùn)算符:用于檢查兩個(gè)字符串是否相等
語(yǔ)法:Operand1 = Operand2
# 不等于運(yùn)算符:用于檢查兩個(gè)字符串不相等
語(yǔ)法:Operand1 != Operand2
# 小于運(yùn)算符:是一個(gè)條件運(yùn)算符,用于檢查string1是否小于string2
語(yǔ)法:Operand1 Operand2
# 大于運(yùn)算符:用于檢查string1是否大于string2
語(yǔ)法:Operand1 > Operand2
# 檢查字符串長(zhǎng)度是否大于零
語(yǔ)法:[ -n Operand ]
# 檢查字符串長(zhǎng)度是否等于零
語(yǔ)法:[ -z Operand ]
2. 字符串長(zhǎng)度計(jì)算
字符串中的字符總數(shù)表示字符串的長(zhǎng)度。我們有時(shí)需要判斷字符串的長(zhǎng)度才能執(zhí)行特定任務(wù)。在Bash腳本中,可以使用以下幾種方法來(lái)獲取字符串的長(zhǎng)度。
# 方法1
${#str}
# 方法2
expr length "$str"
# 方法3
expr "$str" :'.*'
# 方法4
$str | wc -c
# 方法5
$str | awk '{print length}'
# 注意:請(qǐng)注意在$str周圍使用雙引號(hào)。如果字符串中包含空格,則雙引號(hào)非常重
# 要。否則,可以忽略它。
例子如下
# The script is:
str="str len"
echo "Method1:" ${#str}
length=`expr length "$str"`
echo "Method2:" $length
length=`expr "$str" : '.*'`
echo "Method3:" $length
length=`echo -n $str | wc -c`
echo "Method4:" $length
length=`echo -n $str | awk '{print length}'`
echo "Method5:" $length
# The result is:
Method1: 7
Method2: 7
Method3: 7
Method4: 7
Method5: 7
3. 拆分字符串
有時(shí)候需要根據(jù)分隔符來(lái)拆分字符串?dāng)?shù)據(jù),bash沒(méi)有直接的拆解字符串內(nèi)置函數(shù),但可以使用定界符在bash腳本中拆分字符串?dāng)?shù)據(jù)。分隔符可以是單個(gè)字符,也可以是包含多個(gè)字符的字符串。
我們可以使用**IFS變量來(lái)拆分,**IFS是一個(gè)特殊的內(nèi)部變量,用于將字符串拆分為單詞。**IFS變量稱為“內(nèi)部字段分隔符”,它確定Bash如何識(shí)別邊界。**IFS用于分配分隔字符串的特定定界符[IFS ='']??崭袷?IFS的默認(rèn)值。
但是,也可以使用t,n,-等值作為分隔符。分配定界符后,可以通過(guò)兩個(gè)選項(xiàng)讀取字符串:-r和-a。即,read -ra ARR <<< "str"。在這里,選項(xiàng)-r用于定義反斜杠(),它是字符而不是轉(zhuǎn)義字符。-a選項(xiàng)用于定義將單詞(用IFS分隔)分配給從零開(kāi)始的數(shù)組順序索引。然后,應(yīng)用bash for循環(huán)來(lái)訪問(wèn)列表,這些列表被拆分為一個(gè)數(shù)組。
例子如下:
# The script is:
str="gabc,23ab,45,abc789abcend, jj kk"
IFS="," #setting "," as delimiter
read -ra array < < "$str" #reading str as an array as tokens separated by IFS
declare -p array # print array content
# The result is:
declare -a array='([0]="gabc" [1]="23ab" [2]="45" [3]="abc789abcend" [4]=" jj kk")'
拆分字符串還有其它方式,這只是其中一種。
4. 提取子字符串
子字符串是字符串中的字符序列,Bash提供了一個(gè)從字符串提取信息的選項(xiàng),可以使用多種方法提取數(shù)字或給定的字符串。字符串提取的語(yǔ)法為:
${variable:offset:length}
# 其中:
# - variable是包含字符串的變量名稱
# - offset用于指定從何處開(kāi)始提取字符串的位置,也可以是負(fù)的,反向提取
# - length用于指定從偏移量開(kāi)始執(zhí)行的字符范圍
# 分配長(zhǎng)度是可選的。如果未提供length,則子字符串的結(jié)尾將是字符串的結(jié)尾
例子如下:
# The script is:
str="welcome to the world"
echo ${str:0:10}
echo ${str:(-9)}
# The result is:
welcome to
the world
5. 連接字符串
將兩個(gè)或多個(gè)字符串添加或連接在一起,這稱為字符串連接。bash中字符串連接的格式為:
# 方法1:
str3="$str1$str2"
# 此命令將串聯(lián)str1和str2變量的值,并將其存儲(chǔ)在第三個(gè)變量str3中
# 方法2:
newstr="${str} newstr"
# 此命令將字符串變量的值與其它字符串拼接在一起
-
字符串
+關(guān)注
關(guān)注
1文章
577瀏覽量
20485 -
Shell
+關(guān)注
關(guān)注
1文章
363瀏覽量
23297 -
Bash
+關(guān)注
關(guān)注
0文章
57瀏覽量
10169
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論