【问题标题】:How to empty an array in bash script如何在bash脚本中清空数组
【发布时间】:2019-09-01 18:41:31
【问题描述】:

我正在尝试从一堆文件中获取特定信息。 遍历文件列表,greping 来满足我的需要。我确定每个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

我不想删除数组的特定成员/索引,而是删除整个数组本身。谁能告诉我怎么做?

【问题讨论】:

    标签: arrays linux bash shell


    【解决方案1】:

    unset 使用变量名,而不是它们保留的值。所以:

    unset arr1
    

    或者,如果你想清空它:

    arr1=()
    

    【讨论】:

      猜你喜欢
      • 2013-04-02
      • 2011-07-30
      • 2021-08-28
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多