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}

わかりました..ここで、配列の各要素に対して ID = ${SORT_OUT1} の値である SELECT を作成するループを作成する必要があります。したがって、2 つのループがあります。while on 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}

何か案は?ありがとう

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"

-loopの本体でfor標準入力から読み取るものがないことに注意してください。そうしないと、コマンド用の入力の一部が消費されreadます。安全のために、別のファイル記述子を使用してください。

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