我已经设置了|作为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
任何人都可以解释为什么简·布朗的太空人物造成问题?
由于 西蒙
答案 0 :(得分:4)
将${people[@]}
括在双引号中:
for person in "${people[@]}"
...
否则,Mrs|Jane Brown
将被解释为2个单独的令牌: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