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

String 如何拆分字符串并将每个拆分存储到变量中,string,bash,cut,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 我在这里迷路了。请帮帮我 您可以使用以下read语句,其中@被定义为字段分隔符: for x in $arr do

对于输出,我得到

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

    for x in $arr
    do
        echo "> $x"
    done
}
我想将它们存储到单独的变量中。我该怎么做

我要去吗

name
gmail.com

我在这里迷路了。请帮帮我

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

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

您还可以使用
cut

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

$name=$(cut-d'@'-f1您可以使用以下
read
语句,其中
@
被定义为字段分隔符:

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

您还可以使用
cut

$ echo "var1=$var1, var2=$var2"
var1=name, var2=gmail.com
$name=$(cut-d'@'-f1您可以使用bash:

您可以使用bash:


可能值得明确指出的是,
读取
方法效率更高,应该尽可能优先使用。@charlesduff感谢您的评论。为了确保我理解正确:它是否因为只使用内置程序而更有效?这避免了与comman相关的fork/exec/read开销d替换。可能值得明确指出的是,
read
方法效率更高,应该尽可能首选。@CharlesDuffy感谢您的评论。为了确保我理解正确:它更高效是因为它只使用内置程序吗?这一点,以及避免fork/exec/read开销关联ted with command substitution.FYI,
function foo(){
与基线POSIX shell不必要地不兼容。只需省略
function
关键字,并将函数定义为
foo(){…
另外,
arr
的名称有点误导人,因为它实际上不是数组——bash数组有自己的语法,这不是其中之一。看,嘿,我不知道POSIX shell是什么。我正在使用Linux。它工作得很好。**仅供参考,
function foo(){
与基线POSIX shell不必要地不兼容。只需省略
函数
关键字,并将函数定义为
foo(){…
另外,
arr
的名称有点误导人,因为它实际上不是数组——bash数组有自己的语法,这不是其中之一。看,嘿,我不知道POSIX shell是什么。我正在使用Linux。它工作得很好**
$ 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