首页 > 解决方案 > for 循环显示数组的所有元素而不是单个元素

问题描述

使用 bash 列出与 find 命令匹配的文件,并一次遍历它们。问题是,循环显示数组的所有元素而不是单个元素。

    declare poslogs=$(find /opt/upload/archive/ -name "pospoll*" -mtime -3 -printf '%f\n')
    for i in ${poslogs[@]}; do
        unzip -p /opt/upload/archive/$i $poslogfn.${reg}* \
        | grep -B5 "$trans" | grep -o "TransactionType.*" > $resultfile.poslog
    done

结果是

+ declare 'poslogs=pospoll.1699.20211011230928.zip
pospoll.1699.20211012233221.zip
pospoll.1699.20211013232932.zip'
  for i in '"${poslogs[@]}"'
+ unzip -p '/opt/upload/archive/pospoll.1699.20211011230928.zip
pospoll.1699.20211012233221.zip
pospoll.1699.20211013232932.zip' 'PosLog.1.*'

结果应该是

++ find /opt/upload/archive/ -name 'pospoll*' -mtime -3 -printf '%f\n'
+ declare 'poslogs=pospoll.1699.20211011230928.zip
pospoll.1699.20211012233221.zip
pospoll.1699.20211013232932.zip'
  for i in '"${poslogs[@]}"'
+ unzip -p '/opt/upload/archive/pospoll.1699.20211011230928.zip 'PosLog.1.*'

标签: bash

解决方案


推荐阅读