我正在尝试将字符串拆分为两个变量(不必使用while循环):

var="hello:world"
IFS=':' read var1 var2 <<< $var

echo "var1: $var1"
echo "var2: $var2"

但我没有得到想要的结果:
var1: 'hello world'
var2: ''

有谁能解释一下这样做的可能性吗?

最佳答案

这是Bash 4.2中的一个bug。有关正确的解释,请参见chepner's answer
这是关于引用。使用:

IFS=':' read var1 var2 <<< "$var"
                           ^    ^

而不是
IFS=':' read var1 var2 <<< $var

见结果:
$ IFS=':' read var1 var2 <<< "$var"
$ echo "var1=$var1, var2=$var2"
var1=hello, var2=world

但是
$ IFS=':' read var1 var2 <<< $var
$ echo "var1=$var1, var2=$var2"
var1=hello world, var2=

关于bash - 尝试将字符串分成两个变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20144593/

10-13 05:20