2

我已设置 | 作为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

谁能解释一下为什么简布朗中的空间角色会引起问题?

谢谢西蒙

4

1 回答 1

4

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

for person in "${people[@]}"
...

否则,Mrs|Jane Brown将被解释为 2 个单独的标记:Mrs|JaneBrown.

把它想象成:

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
于 2011-06-07T15:23:54.697 回答