2013-03-27 57 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