我正在尝试将字符串拆分为两个变量(不必使用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/