繁体   English   中英

Bash-如何获取http响应正文和状态代码?

[英]Bash - How to get http response body and status code?

我正在尝试下面的代码来获取响应正文和状态:

read -ra result <<< $(curl -i --insecure \
    -H "Accept: application/json" \
    -H "Content-Type:application/json" \
    -X POST --data "$configData" $openingNode"/voice/v1/updateWithPh")
status=${result[1]}
response=${result[@]}
echo $status

这里的问题是-

我正确地获得了状态代码和响应正文。 但是,当我创建一个bash函数并将其作为参数发送时,响应主体在函数中将变为“ HTTP / 1.1” ,如下所示。

echo $(validateUpdate $configData $response)

功能代码-

function validateUpdate(){
   echo $1
   echo $2
}

$ 2打印为“ HTTP / 1.1”

是什么原因? 如何纠正这个问题?

您需要将变量用双引号引起来,以防止bash将其拆分为单独的标记。

尝试

echo $(validateUpdate "$configData" "$response")

甚至更好(@tripleee指出,echo没用;大括号可以提高可读性):

validateUpdate "${configData}" "${response}"

在函数中使用相同的东西

echo "$2"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM