Problem beim Ersetzen der Json-Variablen durch den Shellskriptwert mit curl

0
#!/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"

Unten ist der JSON, in dem ich versuche, $ {CUST_NAME} durch Shell-Skriptvariable CUST_NAME zu ersetzen. Funktioniert aber nicht. Kann mir jemand dabei helfen?

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

Antworten:

0

Die Art und Weise, wie Sie sie CONFIG_FILE_PATHin Ihrer curlZeile verwenden, wird von der Shell nicht gelesen und analysiert, sodass keine Variablensubstitution stattfindet. Es gibt viele Möglichkeiten, aber ich ziehe es vor, meinen eigenen Ersatz zu machen sed:

JSON-Vorlage:

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

Skript:

#!/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"
Eugen Rieck
quelle