#!/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} переменной сценария оболочки CUST_NAME. Но не работает. Может ли кто-нибудь помочь в этом?

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

1 ответ1

0

То, как вы используете 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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .