我们来看下面的例子:
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。我尝试过各种方式,但没有运气。任何人都能解释一下吗?
答案 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