壳牌| Array分隔包含空格的元素

时间:2016-01-27 17:14:31

标签: arrays shell loops

我有一个包含

等记录的文件
abc def, pqrm, tuv<linebreak>
qwe ett, tyr, rty<line break>
asd fgh, ghj, lkj<line break>

我从上面文件的第一列创建了一个数组,如下所示``

TokenName= ($( awk 'BEGIN {FS = ","}; {print $1}' <filename> ))

现在我在使用

访问元素时
for tname in "${TokenName[@]}"
do
    echo $tname
done

我期待输出为

abc def
qwe ett
asd fgh

但是打印输出为

abc 
def
qwe 
ett
asd 
fgh

请建议如何解决

1 个答案:

答案 0 :(得分:1)

Shell扩展确实发生在空白上。您可以通过逐行循环遍历文件并在数组中追加第一列来避免使用awk并在shell中执行此操作:

arr=()

while IFS=, read -r c1 _; do
   arr+=("$c1")
done < file

然后测试输出数组:

declare -p arr # running this should emit the following line as output:
declare -a arr='([0]="abc def" [1]="qwe ett" [2]="asd fgh")'