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

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

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

do
  echo $cmd
done

将导致:

sleep
100
sleep
110
sleep
120

那么,任何想法如何做到这一点?

4

1 回答 1

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

管道创建一个子外壳。I/O 重定向(包括此处的文档)没有。

于 2012-06-06T14:43:39.657 回答