使用shell返回500错误的Rest调用

时间:2018-02-13 09:45:18

标签: bash shell rest curl

使用shell返回500错误的Rest调用,但是当我打印我想要运行的命令时,当我尝试在bash中运行时,它的执行完美

TEST="curl -X PUT $urlvalue -X PUT -i -H "$headervalue1" -H "$headervalue2" -c cookies.txt -d '${datavalue//\'/\'}'"
echo $TEST
RESPONSE=`$TEST`
echo $RESPONSE

测试输出如下

curl -X PUT http://abcxyz/metadata -X PUT -i -H "Accept:application/json" -H "Content-Type:application/json" -c cookies.txt -d '{"fileName":"ABC_GB.zip"}'

1 个答案:

答案 0 :(得分:2)

您有引用问题,请尝试更好(并且您有2次-X,这是多余的):

TEST="curl -i -X PUT \"$urlvalue\" -H \"$headervalue1\" -H \"$headervalue2\" -c cookies.txt -d \"${datavalue//\'/\'}\""

或使用功能:

put_stuff() {
    curl -i -X PUT "$1" -H "$2" -H "$3" -c cookies.txt -d "${datavalue//\'/\'}"
}

用法:

put_stuff "$urlvalue" "$headervalue1" "$headervalue2"

解释:

在shell中,你不能有嵌套的双引号,这是一个冲突:

“双引号”每个包含空格/元字符和每个扩展的文字:"$var""$(command "$var")""${array[@]}""a & b"。使用'single quotes'代码或文字$'s: 'Costs $5 US'ssh host 'echo "$HOSTNAME"'。见
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words