我需要在不输入子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
所以,任何想法如何做到这一点?
答案 0 :(得分:1)
while read -r cmd; do
echo $cmd
done <<EOF
sleep 100
sleep 110
sleep 120
EOF
Pipes创建一个子shell。 I / O重定向(包括here-documents)没有。