我是想获取header为Connection的值。然后两边拼接单引号。于是直接使用普通的方法发生了字符串拼接不上。会发生覆盖。
示例代码1(原始方案)你会发现右边单引号始终拼接不上去:
chengli.zou@clz-mbp Desktop % echo "'"$(curl -I https://www.baidu.com|grep Connection|awk '{print $2}')"'"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 277 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
'keep-alive
示例代码2(原始方案放大)可以断定是发生了覆盖:
chengli.zou@clz-mbp Desktop % echo "'"$(curl -I https://www.baidu.com|grep Connection|awk '{print $2}')"hehe"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 277 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
hehep-alive
chengli.zou@clz-mbp Desktop %
示例代码3(替代方案):
chengli.zou@clz-mbp Desktop % cat curl-grep-token.sh
#!/bin/bash
shopt -s extglob
function grepToken()
{
while IFS=':' read key value; do
value=${value##+([[:space:]])}; value=${value%%+([[:space:]])}
case "$key" in
Server) SERVER="$value"
;;
Connection) TOKEN="$value"
;;
HTTP*) read PROTO STATUS MSG <<< "$key{$value:+:$value}"
;;
esac
done < <(curl -sI $1)
echo $TOKEN
}
token=$(grepToken http://www.baidu.com)
echo "'"$token"'"
chengli.zou@clz-mbp Desktop % ./curl-grep-token.sh
'keep-alive'