使用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"}'
答案 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