【发布时间】:2016-04-21 09:38:54
【问题描述】:
我正在尝试将 curl 响应的标头(来自 stderr)存储在一个变量中,并将正文(来自 stdout)通过管道传输到 grep。
这是我目前的尝试:
{
HEADERS=$(curl -vs $URL 2>&1 1>&3-)
echo "$HEADERS"
} 3>&1 | grep "regex" >> filename
echo "$HEADERS"
当我使用bash -x script.sh 运行脚本时,我看到+ HEADERS='...' 具有预期的输出,但我无法使用$HEADERS 或"$HEADERS" 在内联组内外访问它们。
身体按预期通过管道。
【问题讨论】:
-
所以您希望
grep输出在终端或其他地方? -
curl -vs -$URL 2>&1 1>&3-到curl -vs $URL 2>&1 1>&3- -
有什么理由不只是将 header 设置为变量,然后 grep 变量而不是这个复杂的管道?
-
@anishsane 在这种情况下,
grep输出应附加到filename。这部分有效。 -
@123 该变量包含来自 stderr 的标头。
grep处理来自标准输出的正文。