Передача переменной в команду CURL с использованием скриптов bash (с двойными кавычками в значении переменных) - PullRequest
0 голосов
/ 08 ноября 2018

У меня проблемы с созданием и последующим использованием переменной, которая содержит двойные кавычки в значении, и я действительно изо всех сил пытался найти другие посты с таким примером, некоторые со специальными символами, но ни один из них специально не рассматривал использование двойных кавычек.

Я хочу создать переменную в скрипте bash, которая позволит мне выполнить следующую команду CURL со значением «text» в качестве переменной

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

1 Ответ

0 голосов
/ 09 ноября 2018

(Для этого есть дубликат, но я никогда его не найду.)

Используйте инструмент типа jq для создания JSON.

data=$(jq --argjson x "$VAR1" '
  {
    text: $x,
    features: {},
    sentiment: {},
    categories: {},
    concepts: {},
    keywords: {},
    emotion: {}  
  }'
)
curl ... -d "$data" ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...