使用其他分隔符时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