W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在某些情況下,您可能需要先拆分字符串以進(jìn)行您下一步的操作。由于在 Bash 中不包含類似其他編程語言中的split
內(nèi)置函數(shù),所以需要參考以下幾種方法來學(xué)習(xí)如何拆分字符串。
您可以使用$IFS
在 Bash 中將字符串細(xì)分。
IFS
被稱為“內(nèi)部域分隔符”,是一種 set 變量。IFS
的值來拆解讀入的變量,然后對(duì)其進(jìn)行處理。IFS
的默認(rèn)值為空格符,也可使用\t
,\n
等值作為分隔符設(shè)置給IFS
。示例:
#!/bin/bash
read -p "Enter any string separated by space: " str #讀取字符串的值。
IFS=' ' #將空格設(shè)置為分隔符。
read -ra strArr <<<"$str" #將字符串讀取到數(shù)組中,并由 IFS 分配分隔符。
for i in "${strArr[@]}"; #遍歷訪問數(shù)組中的每個(gè)元素。
do
echo "$i"
done
執(zhí)行后得到以下結(jié)果:
Enter any string separated by space:welcome to W3Cschool
welcome
to
W3Cschool
在不使用IFS
的情況下,您可以使用 readarray
命令加上-d
選項(xiàng)對(duì)字符串進(jìn)行分割。
示例:
#!/bin/bash
read -p "Enter any string separated by colon(:) " str #讀取字符串的值,并將分隔符設(shè)置為 : 。
readarray -d : -t strArr <<<"$str" #根據(jù)設(shè)置的分隔符 : 來拆分字符串。
printf "\n"
#遍歷打印輸出數(shù)組中的每一個(gè)值
for (( n=0; n < ${#strArr[*]}; n++ ))
do
echo "${strArr[n]}"
done
執(zhí)行后得到以下結(jié)果:
Enter any string separated by colon(:) welcome:to:W3Cschool
welcome
to
W3Cschool
您還可以使用tr
命令來分割字符串。tr
用于在原有定界符的基礎(chǔ)上,對(duì)字符串進(jìn)行拆分。
示例:
#!/bin/bash
str="welcome;to;W3Cschool!" #定界符 ;
arr=($(echo $str | tr ";" "\n"))#將定界符定義給 tr
for i in "${arr[@]}"
do
echo $i
done
執(zhí)行后得到以下結(jié)果:
welcome
to
W3Cschool!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: