你的問題有點不清楚,但爲了從多個平行的源來讀取,您需要使用多個文件描述符,並且我認爲,進程替換。
while read line_from_1;
read -u 3 line_from_2; do
echo "From first: $line_from_1"
echo "From second: $line_from_2"
done < <(echo "$first_list") 3< <(echo "$second_list")
(當然,你不必使用兩個變量,如果他們不已經存在,只是把用於填充在適當的進程替換哺養while
循環的每個變量的代碼:
done < <(...code for first list...) 3< <(...code for second list...)
)
書面,循環將只要秒讀成功(第一次讀的退出狀態被忽略)成功。只要雙方都成功就可以循環使用,請使用read line_from_1 && read -u 3 line_from_2
。
要循環只要要麼成功,你需要一個稍微複雜一點的迷你腳本作爲while
條件:
while read line_from_1; read1=$?;
read line_from_2; read2=$?;
((read1 == 0 || read2 == 0)); do
更新:您也可以直接在這裏使用的字符串,如果變量已經設置替代進程替代。 (我不知道,如果3<<<
是合法的。)
while read line_from_1; read -u 3 line_from_2; do
...
done <<< "$first_line" 3<<< "$second_line"
什麼是'$ 1st_list'和'$ 2nd_list'中的樣本值? – anubhava 2014-09-18 16:02:51
@anubhava $ 1st_list和$ 2nd_list是多行腳本變量。我試圖用這些變量創建一個csv文件。不知道這是否是這樣做的最佳方式。我會更新這個問題。 – hfranco 2014-09-18 16:06:15
你有兩組線,你正試圖結合到底如何? '行1,line2'? 'line1field1,line2field1,l1f2,l2f2,......「? – 2014-09-18 16:07:53