📜  bash 将字符串拆分为变量 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:39:28.529000             🧑  作者: Mango

Bash 将字符串拆分为变量

在 Bash 中,您可以使用一些方法将字符串拆分为变量。这样可以方便地处理字符串,提取所需的信息并将其存储在不同的变量中。下面将介绍几种常用的拆分字符串的方法。

1. 使用IFS(Internal Field Separator)拆分字符串

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
2. 使用 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
3. 使用正则表达式拆分字符串

如果您的字符串遵循特定的模式,您可以使用正则表达式来拆分字符串。

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 中将字符串拆分为变量的几种常用方法。使用这些方法,您可以按照自己的需求将字符串拆分为任意数量的变量,从而更方便地处理字符串数据。