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

时间:2018-02-19 22:37:32

标签: bash shell curl

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

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”

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

1 个答案:

答案 0 :(得分:0)

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

尝试

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

甚至更好(回声没有用,因为@tripleee指出;此外花括号提高了可读性):

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

在你的功能中使用相同的东西

echo "$2"