如何拆分字符串并将每个拆分存储到变量中

时间:2014-03-17 15:56:48

标签: string bash cut

function check()
{
    word=name@gmail.com
    arr=$(echo $word | tr "@" "\n")

    for x in $arr
    do
        echo "> $x"
    done
}
输出

name
gmail.com

我想将它们中的每一个存储到单独的变量中。我该怎么做?

我去吗

for x in $arr
do
    echo "> $x"
    first=$x
    second=$x
done

这里很丢失。请帮帮我!

2 个答案:

答案 0 :(得分:7)

您可以使用以下read句子,其中@被定义为字段分隔符:

$ var="name@gmail.com"
$ IFS="@" read var1 var2 <<< "$var"

然后查看值的存储方式:

$ echo "var1=$var1, var2=$var2"
var1=name, var2=gmail.com

您还可以使用cut

$ name=$(cut -d'@' -f1 <<< "$var")
$ email=$(cut -d'@' -f2 <<< "$var")
$ echo "name=$name, email=$email"
name=name, email=gmail.com

答案 1 :(得分:5)

您可以使用bash parameter expansion/substring removal

$ var="name@gmail.com"

# Remove everything from the beginning of the string until the first
# occurrence of "@"
$ var1="${var#*@}"

# Remove everything from the end of the string until the first occurrence
# of "@"
$ var2="${var%@*}"

$ echo "$var1"
gmail.com

$ echo "$var2"
name