[shell]curl结果获取http header的问题

在通过curl请求http获取response header时, 发现字符串拼接一个问题。
比如以下程序:

hadoop@1:~$ ct=$(curl -s -I http://www.baidu.com | grep Content-Type | awk '{print $2}')
hadoop@1:~$ echo $ct
text/html
hadoop@1:~$ echo $ct"_postfix"
_postfixl

最后一行输出竟然是: _postfixl, 而不是期待的text/html_postfix
细看结果应该是_postfix 直接覆盖了text/html 前面的内容。
http header是以\r\n 作为行分割符,与echo机制有什么冲突?
原因未解, 不过找到这样一种替代方法(如test.sh):

shopt -s extglob # 识别正则, 用于后面去掉空格

function grepCT()
{
    while IFS=':' read key value; do
        # 去掉"value"内的空格
        value=${value##+([[:space:]])}; value=${value%%+([[:space:]])}
        case "$key" in
            Server) SERVER="$value"
                    ;;
            Content-Type) CT="$value"
                    ;;
            HTTP*) read PROTO STATUS MSG <<< "$key{$value:+:$value}"
                    ;;
         esac
    done < <(curl -sI $1)
    echo $CT
}
ct=$(grepCT http://www.baidu.com)
echo $ct"_postfix"

执行shell文件:

hadoop@1:~$ bash test.sh
text/html_postfix
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值