Linux Bash多变量赋值 客观的

Linux Bash多变量赋值 客观的,linux,bash,shell,Linux,Bash,Shell,使用一个线性命令将来自cURL输出的HTTP状态代码和日期分配给RESP和date变量 期望值 现实 $read-d“\n”RESP DATEcurl的输出包含一些\r字符, 这就是为什么输出看起来乱七八糟的原因。 您可以通过在curl之后和egrep之前的管道中插入tr-d'\r'来消除它 读入RESP和DATE变量真的很重要吗? 您可以使用Awk提取更简单、更理智的有趣部分, 并以所需格式直接输出: curl ... | tr -d '\r' | awk '/^< Date: / {

使用一个线性命令将来自cURL输出的HTTP状态代码和日期分配给
RESP
date
变量

期望值 现实
$read-d“\n”RESP DATEcurl的输出包含一些
\r
字符, 这就是为什么输出看起来乱七八糟的原因。 您可以通过在
curl
之后和
egrep
之前的管道中插入
tr-d'\r'
来消除它

读入
RESP
DATE
变量真的很重要吗? 您可以使用Awk提取更简单、更理智的有趣部分, 并以所需格式直接输出:

curl ... | tr -d '\r' | awk '/^< Date: / { date = substr($0, 9); print "[" date "] " resp } /^< HTTP\// { resp = $3 }'
curl…|tr-d'\r'| awk'/^
awk怎么样:

curl --silent --head https://google.com | awk '
    /^HTTP/ {code = $2} 
    /^Date:/ {
        sub(/\r$/,"")
        date = substr($0,7)
        printf "[%s] %s\n", date, code
        exit
    }
'

使用HTTP
HEAD
请求来最小化流量。

谢谢!现在可以了!我用完整的工作指令编辑了我的文章。干杯!
$ read -d "\r" RESP DATE <<< $(curl -sv https://google.com 2>&1 | tr -d "\r" | egrep -i "< HTTP/2|< Date" | sed "s/< HTTP\/2 //;s/< date: //g"); echo "[$DATE] $RESP"
[Wed, 08 Nov 2017 19:57:33 GMT] 301
$
curl ... | tr -d '\r' | awk '/^< Date: / { date = substr($0, 9); print "[" date "] " resp } /^< HTTP\// { resp = $3 }'
curl --silent --head https://google.com | awk '
    /^HTTP/ {code = $2} 
    /^Date:/ {
        sub(/\r$/,"")
        date = substr($0,7)
        printf "[%s] %s\n", date, code
        exit
    }
'