2012-06-06 35 views
0

我需要解析多條線路,而無需輸入子shell解析沒有子外殼的行......怎麼樣?

cat << EOF | while read -r cmd 
sleep 100 
sleep 110 
sleep 120 
EOF 

do 
    echo $cmd 
done 

將導致:

sleep 100 
sleep 110 
sleep 120 

並且它是工作的,但問題是我需要外亞殼的結果(是因爲我需要之後的結果),試圖與替代的同時,但隨後它不會解析線,但話:

for cmd in `cat << EOF 
sleep 100 
sleep 110 
sleep 120 
EOF` 

do 
    echo $cmd 
done 

將導致:

sleep 
100 
sleep 
110 
sleep 
120 

那麼,任何ideea該怎麼做?

回答

1
while read -r cmd; do 
    echo $cmd 
done <<EOF 
sleep 100 
sleep 110 
sleep 120 
EOF 

管道創建一個子shell。 I/O重定向(包括here-documents)不會。

+0

代碼看起來有點...淫:P,但謝謝你!它正在工作並完成工作;) – THESorcerer