解析没有子shell的行......怎么样?

时间:2012-06-06 14:38:31

标签: bash

我需要在不输入子shell的情况下解析许多行

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

do
    echo $cmd
done

将导致:

sleep 100
sleep 110
sleep 120

并且它正在工作,但问题是我需要在子shell之外的结果(因为我需要结果之后),尝试用而不是while,但是它不会解析行而是单词:

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

do
  echo $cmd
done

将导致:

sleep
100
sleep
110
sleep
120

所以,任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:1)

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

Pipes创建一个子shell。 I / O重定向(包括here-documents)没有。