如何在Bash脚本中清空一个数组

10
我正在尝试从一堆文件中获取特定信息。在文件列表上进行迭代,grep我需要的内容。我确定每个grep会给出不止一个结果,我想将该结果存储在数组中。完成文件特定工作后,我想从数组中清除所有内容,并为新文件重新开始。
files_list=`ls`

for f in $files_list
do
        echo $f
        arr1=`cat $f | grep "abc" | grep "xyz"`
        arr2=`cat $f | grep "pqr" | grep "mno"`
        arr3=`cat $f | grep "df"`
        for ((i=0; i<${#arr1[@]}; ++i)) 
        do
            printf "%s  %s %s\n" "${arr1[i]}" "${arr2[i]}" "${arr3[i]}"
        done
        unset $arr1
        unset $arr2
        unset $arr3
done

我使用unset来清空数组,但是它出现了错误。

line 49: unset: `x': not a valid identifier

我不想删除数组中的特定成员/索引,而是想删除整个数组。有没有人能告诉我如何做到这一点?
1个回答

23

unset 只作用于变量名,而不是它们所包含的值。因此:

unset arr1

或者,如果你想清空它:

arr1=()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接