如何在Bash中的分隔符上拆分字符串?
我将此字符串存储在变量中: IN="bla@some.com;john@home.com" 现在我想用;定界符分割字符串,这样我就可以: ADDR1="bla@some.com" ADDR2="john@home.com" 我不一定需要 ADDR1和ADDR2变量。如果它们是数组的元素,那就更好了。 经过以下答案的建议后,我得出了以下结论: #!/usr/bin/env bash IN="bla@some.com;john@home.com" mails=$(echo $IN | tr ";" "\n") for addr in $mails do echo "> [$addr]" done 输出: > [bla@some.com] > [john@home.com] 解决方案涉及设置Internal_field_separator(IFS)为;。我不确定该答案发生了什么,如何重置IFS为默认值? RE:IFS解决方案,我尝试过了,而且可行,我保留了旧的IFS,然后将其还原: IN="bla@some.com;john@home.com" OIFS=$IFS IFS=';' mails2=$IN for x in $mails2 do echo "> [$x]" done IFS=$OIFS 顺便说一句,当我尝试 mails2=($IN) 循环打印时,我只有第一个字符串,但没有括号$IN可以使用。