簡體   English   中英

Bourne shell - 為數組中的每個元素創建一個循環?

[英]Bourne shell - make a loop for each element in an array?

這是我的陣列:

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上的一段時間和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}

有任何想法嗎? 謝謝

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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM