这是我的阵列:
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;
然后,我以这种方式从select中做了一种id(FILESELECT_DAT是查询的输出文件):
sort -u ${FILESELECT_DAT} > ${SORT_OUT1}
ok ..现在我必须创建一个循环,为数组的每个元素创建一个SELECT,其中ID = $ {SORT_OUT1}的值。所以有2个循环。 ID上的一段时间和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}
有什么想法吗?感谢
答案 0 :(得分: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
- 循环体内没有任何东西从标准输入读取,否则它将消耗用于read
命令的部分输入。为安全起见,请使用单独的文件描述符:
while read -u 3 id; do
...
done 3< "$SORT_OUT1"