📅  最后修改于: 2023-12-03 14:39:28.529000             🧑  作者: Mango
在 Bash 中,您可以使用一些方法将字符串拆分为变量。这样可以方便地处理字符串,提取所需的信息并将其存储在不同的变量中。下面将介绍几种常用的拆分字符串的方法。
IFS
是 Bash 中用于设置字段分隔符的环境变量,默认情况下,IFS
的值是空白符(空格、制表符和换行符)。我们可以将其设置为想要的分隔符,然后使用 read
命令来将字符串拆分为变量。
str="Hello,World,This,is,a,string"
IFS=',' read -ra arr <<< "$str"
解释:
str
是要拆分的字符串。IFS=','
将 IFS
设置为逗号作为分隔符。read -ra arr <<< "$str"
将字符串拆分为数组 arr
。输出:
echo "${arr[0]}" # Hello
echo "${arr[1]}" # World
echo "${arr[2]}" # This
echo "${arr[3]}" # is
echo "${arr[4]}" # a
echo "${arr[5]}" # string
cut
命令拆分字符串使用 cut
命令也可以拆分字符串,并将拆分后的字段存储在不同的变量中。
str="Hello,World,This,is,a,string"
var1=$(echo "$str" | cut -d',' -f1)
var2=$(echo "$str" | cut -d',' -f2)
var3=$(echo "$str" | cut -d',' -f3)
var4=$(echo "$str" | cut -d',' -f4)
var5=$(echo "$str" | cut -d',' -f5)
var6=$(echo "$str" | cut -d',' -f6)
解释:
str
是要拆分的字符串。cut -d',' -f1
表示以逗号作为分隔符 -d','
并提取第一个字段 -f1
。输出:
echo "$var1" # Hello
echo "$var2" # World
echo "$var3" # This
echo "$var4" # is
echo "$var5" # a
echo "$var6" # string
如果您的字符串遵循特定的模式,您可以使用正则表达式来拆分字符串。
str="Hello[World](This){is}a|string"
pattern='\[(.*?)\]|\((.*?)\)|\{(.*?)\}|(.*?)\|'
[[ $str =~ $pattern ]]
var1="${BASH_REMATCH[1]}" # World
var2="${BASH_REMATCH[2]}" # This
var3="${BASH_REMATCH[3]}" # is
var4="${BASH_REMATCH[4]}" # a
解释:
str
是要拆分的字符串。pattern
是一个正则表达式,用于匹配方括号、圆括号、大括号和竖线之间的内容。[[ $str =~ $pattern ]]
使用正则表达式匹配字符串。${BASH_REMATCH[1]}
、${BASH_REMATCH[2]}
等表示匹配结果的不同部分。输出:
echo "$var1" # World
echo "$var2" # This
echo "$var3" # is
echo "$var4" # a
这些是在 Bash 中将字符串拆分为变量的几种常用方法。使用这些方法,您可以按照自己的需求将字符串拆分为任意数量的变量,从而更方便地处理字符串数据。