将shell变量传递给JSON请求以进行卷曲?

时间:2014-08-14 03:08:58

标签: json bash curl

我们来看下面的例子:

curl -i -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "Player.Open", "params":{"item":false}}' \
http://example.com/jsonrpc

现在我希望在shell脚本变量中设置“item”的布尔值,例如:

 PRIVATE=false
 read -p "Is this a private? (y/[n]) " -n 1 -r
 if [[ $REPLY =~ ^[Yy]$ ]]; then
     PRIVATE=true
 fi

我想将PRIVATE的值传递给item。我尝试过各种方式,但没有运气。任何人都能解释一下吗?

3 个答案:

答案 0 :(得分:3)

你可以这样做:

curl -i -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "Player.Open", "params":{"item":'"$PRIVATE"'}}' \
http://example.com/jsonrpc

答案 1 :(得分:1)

您可以尝试以下操作,而不是上面的现有-d ...行:

  

-d“{\”jsonrpc \“:\”2.0 \“,\”method \“:\”Player.Open \“,\”params \“:{\”item \“:$ PRIVATE}} “\

那就是:当使用双引号语音标记(“)时,bash会将值替换为引用$ LIKE_THIS的变量(不是你使用的单引号的情况)。缺点是你需要转义任何双引号字符串本身(使用反斜杠,如上所述)。

答案 2 :(得分:0)

这种憎恶也有效。

$ npm run script -- madrid

# script
json='{"city":"'"$1"'"}'
curl -X POST -d $json http://localhost:5678/api/v1/weather