Linux 将curl重定向到while循环

Linux 将curl重定向到while循环,linux,bash,curl,Linux,Bash,Curl,有没有办法将curl输出重定向到while循环 while read l; do echo 123 $l; done < curl 'URL' 读l时;做 echo 123$l; 完成

有没有办法将curl输出重定向到while循环

while read l; do 
  echo 123 $l; 
done < curl 'URL'
读l时
;做
echo 123$l;
完成

还是有更好的方法?我只需要读取页面内容,在每行前面加上一些内容并保存到文件中。

您可以使用管道操作符
|

curl 'URL' | while read l; do 
   echo 123 $l >> file.txt
done

您将希望使用过程替换重定向curl的输出,如下所示:

while read -r l; do 
    echo "123 $l"
done < <(curl 'URL')
while read -r l; do 
    echo "123 $l"
done <<<"$(curl 'URL')"
读取时-rl;做
echo“123$l”

done<您不需要管道,事实上,您应该避免使用管道为读取循环提供数据。使用进程替换。@DavidC.Rankin我愿意接受我错了,但如果你说为什么,即为什么不应该使用管道为读取循环提供数据,那就太好了。好吧,我不是说你错了,你可以使用
管道
,但就像任何时候你认为
cat文件|…
,你刚刚提交了UOOC(不必要地使用
cat
).Redirection是从一个进程向另一个进程提供输入/输出的正确方法,除非您有超过2个。然后您必须使用管道。其次,每个管道生成一个几乎在所有情况下都不需要的附加子shell。当您将其放在cat中时,它是有意义的。谢谢。非常好。r是用来防止某种注入攻击的吗?
:>outfile    ## truncate outfile if it exists
{
    while read -r l; do 
        echo "123 $l"
    done < <(curl 'URL') 
}>outfile