我是想獲取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'