Проблема с заменой переменной Json на значение сценария оболочки с помощью curl

298
user967468
#!/bin/bash #CONFIG_FILE_PATH is the path of the json file as argument while running the script CONFIG_FILE_PATH=$1 CUST_NAME=$2 curl -X POST -i -H "Accept: application/json" -H "Content-Type:application/json" --data-binary @$CONFIG_FILE_PATH "http://localhost:8080/service" 

Ниже приведен json, где я пытаюсь заменить $ переменной сценария оболочки CUST_NAME. Но не работает. Может ли кто-нибудь помочь в этом?

{ "queries": [ { "query": "select * from customer where account_name like '$'" } ] } 
0

1 ответ на вопрос

0
Eugen Rieck

То, как вы используете CONFIG_FILE_PATHв вас curlлинии, он не будет читать и проанализирован оболочкой, поэтому никакой подстановки переменных не происходит. Есть много способов обойти это, но я предпочитаю сделать свою собственную замену через sed:

Шаблон JSON:

{ "queries": [ { "query": "select * from customer where account_name like '##CUST_NAME##'" } ] } 

Автор сценария:

#!/bin/bash #CONFIG_FILE_PATH is the path of the json file as argument while running the script CONFIG_FILE_PATH=$1 CONFIG_FILE=$(cat "$CONFIG_FILE_PATH" | sed "s/##CUST_NAME##/$2/g") curl -X POST -i -H "Accept: application/json" -H "Content-Type:application/json" --data-binary "$CONFIG_FILE" "http://localhost:8080/service" 

Похожие вопросы