Bash 读取命令的输出(多行)

Bash 读取命令的输出(多行),bash,Bash,我想读取一个internet文件的“内容长度”。为此,我使用cURL检索标题 OUTPUT=`curl -I $URL` HTTP/1.1 200 OK Date: Sun, 12 Jan 2014 00:41:11 GMT Server: Apache/2.2.15 (Red Hat) Last-Modified: Sun, 05 Jan 2014 09:41:44 GMT Accept-Ranges: bytes Content-Length: 553648128 Content-Type

我想读取一个internet文件的“内容长度”。为此,我使用cURL检索标题

OUTPUT=`curl -I $URL`

HTTP/1.1 200 OK
Date: Sun, 12 Jan 2014 00:41:11 GMT
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Sun, 05 Jan 2014 09:41:44 GMT
Accept-Ranges: bytes
Content-Length: 553648128
Content-Type: application/octet-stream
但是,当我尝试打印$OUTPUT时,只得到最后一行。

bash

OUTPUT=$(curl -I $URL | grep 'Content-Length')

仅供参考,之所以只得到最后一行,是因为您没有引用变量,所以它被拆分为空白并打印在一行上。这一点,再加上CURL输出HTTP响应返回的回车,意味着您只能看到最后一个,即使所有数据都在那里。
curl -I $url | while read -r response
do 
  case "$response" in
    *Content-Length* )
       echo "==> $response"
    ;;
  esac
done