bash IFS 将字符串拆分为数组

bash IFS split string into array

我有以下行 filename:231:blahblah,我想使用 : 作为分隔符拆分成一个数组

这是我的代码

echo "Text read from file: $line"
IFS=':' read -a FILENAME <<< $line
echo "filename: ${FILENAME[0]}"

实际输出为

Text read from file: filename:231:blahblah 
filename: filename 231 blahblah

我想要的输出是

Text read from file: filename:231:blahblah 
filename: filename

我做错了什么?

解决方案一:

line="filename:231:blahblah"
IFS=':'
FILENAME=($line)
echo "filename: ${FILENAME[0]}"

解决方案 2(源自您的尝试):

line="filename:231:blahblah"
IFS=':' read -a FILENAME <<< "$line"
echo "filename: ${FILENAME[0]}"

运行 结果:

filename: filename