2013-03-27 46 views
1

我有一个建立“动态”数组的问题。多个数组循环外壳

首先我创建一个数组,生成的文件名列表:在同一回路

declare -a pgidarr=`run "select partition_id from ETL.PARTITION_GROUP_MEMBER where partition_group_id=${PGID}"` 
for i in ${pgidarr[@]} 
do 
ARRLOOP=$i 
PAID=`run "select LPAD('${ARRLOOP}',2,'0')"` #LPAD the partition ID 
FILENAME=ABCD_${PAID}_000000.txt 

现在我想创建一个新的阵列

trigarrat=("${trigarrat[@]}" $FILENAME) 

但是当我运行它不会取代$ FILENAME

在谷歌我找不到太多关于数组和变量,任何人都可以请帮助我吗? ;) 谢谢! 亚历

的bash --version GNU的bash,版本3.1.17(1)-release

+0

你大概可以使用'PAID = $(printf“%.2d”$ i)'来避免只用于数字格式的数据库。 – 2013-03-27 18:10:14

+0

你没有正确初始化'pgidarr';这是巧合的,数组中的唯一元素在不引用它的情况下展开数组之后会被拆分为单词。 '声明-a pgidarr =($(run ...))',然后'为我在$ {pgidarr [@]}“' – chepner 2013-03-27 18:19:03

回答

3

尝试使用+=追加要素trigarrat

declare -a pgidarr=`run "select partition_id from ETL.PARTITION_GROUP_MEMBER where partition_group_id=${PGID}"` 
trigarrat=() 
for i in ${pgidarr[@]} 
do 
    ARRLOOP=$i 
    PAID=`run "select LPAD('${ARRLOOP}',2,'0')"` #LPAD the partition ID 
    FILENAME=ABCD_${PAID}_000000.txt 
    trigarrat+=($FILENAME) 
done 

参考:http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameters

+0

谢谢,它工作! – Alex 2013-03-28 15:03:37