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
这里很丢失。请帮帮我!
答案 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