使用其他分隔符时Bash cut命令中的空格字符出现问题

使用其他分隔符时Bash cut命令中的空格字符出现问题,bash,delimiter,cut,shell,Bash,Delimiter,Cut,Shell,我已将|设置为cut命令的分隔符,但空格字符似乎仍被解释为分隔符 以下是我的测试脚本: people[1]="Mr|Smith" people[2]="Mrs|Jane Brown" for person in ${people[@]} do title=$(echo $person | cut -f1 -d\|) name=$(echo $person | cut -f2 -d\|) echo $title $name echo done 哪些产出: Mr

我已将|设置为
cut
命令的分隔符,但空格字符似乎仍被解释为分隔符

以下是我的测试脚本:

people[1]="Mr|Smith"
people[2]="Mrs|Jane Brown"

for person in ${people[@]}
do
    title=$(echo $person | cut -f1 -d\|)
    name=$(echo $person | cut -f2 -d\|)
    echo $title $name
    echo
done
哪些产出:

Mr Smith

Mrs Jane

Brown Brown
有人能解释一下为什么简·布朗的太空角色会引起问题吗

谢谢
西蒙

用双引号括起
${people[@]}

for person in "${people[@]}"
...
否则,
Mrs|Jane Brown
将被解释为两个独立的标记:
Mrs|Jane
Brown

可以这样想:

for i in "a b c"; do echo $i; done # echoes "a b c" just once

for i in a b c; do echo $i; done # does an echo for a, b and c