Using bash to list the files that match a find command and loop through them one at a time. Problem is, the loop displays all elements of the array instead of single element.
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
Result is
+ 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.*'
Result should be
++ 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.*'