我在创建然后使用包含值中包含双引号的变量时遇到了麻烦,并且确实很难找到其他带有此类示例的帖子,其中一些具有特殊字符,但没有专门考虑使用双引号。
我希望在bash脚本中创建一个变量,该变量将允许我以“文本”值作为变量来执行以下CURL命令
curl -v -o POST \
-u "apikey:-------------------------------------" \
-H "Content-Type: application/json" \
-d '{
"text":"Hello World",
"features": {
"sentiment": {},
"categories": {},
"concepts": {},
"keywords": {},
"emotion": {}
}
}' \
"https://gateway-wdc.watsonplatform.net/natural-language-
understanding/api/v1/analyze?version=2018-03-19"
$SHELL
我已经尝试了以下方法,但是,尽管回声看起来好像传递了正确的值,但CURL响应是400错误-无效响应。
VAR1='"Hello World"'
echo "VAR1=${VAR1}"
echo
curl -v -o POST \
-u "apikey:-------------------------------------" \
-H "Content-Type: application/json" \
-d '{
"text":${VAR1},
"features": {
"sentiment": {},
"categories": {},
"concepts": {},
"keywords": {},
"emotion": {}
}
}' \
"https://gateway-wdc.watsonplatform.net/natural-language-
understanding/api/v1/analyze?version=2018-03-19"
$SHELL
答案 0 :(得分:2)
(对此有一个重复项,但我永远找不到。)
使用jq
之类的工具来构建JSON。
data=$(jq --argjson x "$VAR1" '
{
text: $x,
features: {},
sentiment: {},
categories: {},
concepts: {},
keywords: {},
emotion: {}
}'
)
curl ... -d "$data" ...