0

这是我的数组:

ListTabs=""
ListTabs=$ListTabs"T_Tab1\n"
ListTabs=$ListTabs"T_Tab2\n"
ListTabs=$ListTabs"T_Tab3"   
echo $ListTabs
arrArr=0
OLD_IFS=$IFS;
IFS=\n
for listArr in ${ListTabs[@]}; 
do 
     #echo $listArr
     MYDIR[${ARR}]=$listArr
     (( arrIdx = $ARR+ 1 ))
done
IFS=$OLD_IFS;

然后,我以这种方式从选择中完成了一种 id (FILESELECT_DAT 是查询的输出文件):

sort -u ${FILESELECT_DAT} > ${SORT_OUT1}

好的..现在我必须创建一个循环,为数组的每个元素创建一个 SELECT,其中 ID = ${SORT_OUT1} 的值。所以有2个循环。ID 上的 while 和 select 的 for 循环。如何在 ${SORT_OUT1} 中循环 ID?我想这是开始

id=""
while read $id
do
for ListTabs in ${listArr}
do 
-
-
SELECT * FROM $ListTabs(but the results is alway the first tab in each loop)
WHERE ID = ${id}(but he show me all IDs)
-
-
done < ${SORT_OUT1}

有任何想法吗?谢谢

4

1 回答 1

2
listArr=( T_Tab{1,2,3} )
sort -u "$FILESELECT_DAT" > "$SORT_OUT1"
while read id; do
    for ListTabs in "${listArr[@]}"; do
     ...
    done
done < "$SORT_OUT1"

注意for-loop 主体中的任何内容都不会从标准输入中读取,否则它将消耗部分用于read命令的输入。为了安全起见,请使用单独的文件描述符:

while read -u 3 id; do
...
done 3< "$SORT_OUT1"
于 2013-05-15T13:41:30.190 回答