Невозможно передать переменную в запросе gremlin в сценарии оболочки

Я пытаюсь подключиться к Neptune DB и получить сведения о вершинах с помощью команды CURL. У меня есть сценарий оболочки для этого. Но почему-то переменные данные не проходят через запрос gremlin. У меня есть один файл Orgid.txt, в котором присутствует tenantid, и мой сценарий оболочки читает файл и передает его переменной "name"

      #!/bin/bash

i=1

rm VerticesCount1

while IFS= read -r line
do
name="$line"
#echo "Orgid name is "$i": $name"
curl -X POST https://<Neptune_endpoint>:<port>/gremlin -d '{"gremlin":"g.V().has(\"system.tenantId\",\"$name\").count()"}' >> VerticesCount1
#printf "\n"
echo >> VerticesCount1
((i=i+1))
done < Orgid.txt

2 ответа

Решение

Как и в случае с вашим другим вопросом, я тестировал простой файл данных, и он отлично работает. Однако обратите внимание, как я изменил тип цитат, используемых curl.

      i=1

while IFS= read -r line
do
name="$line"

curl -X POST https://mydbcluster.cluster-xxxxxxxxxxxx.us-east-1.neptune.amazonaws.com:8182/gremlin -d \
"{\"gremlin\":\"g.V().has('code','$name').count()\"}"
((i=i+1))
done < values.txt

который производит

      {"requestId":"4e3e80ed-efcb-40a7-b92b-366c6f391d4e","status":{"message":"","code":200,"attributes":{"@type":"g:Map","@value":[]}},"result":{"data":{"@type":"g:List","@value":[{"@type":"g:Int64","@value":1}]},"meta":{"@type":"g:Map","@value":[]}}}{"requestId":"6a269b5b-32f6-49d2-a31d-c51dd52eba29","status":{"message":"","code":200,"attributes":{"@type":"g:Map","@value":[]}},"result":{"data":{"@type":"g:List","@value":[{"@type":"g:Int64","@value":1}]},"meta":{"@type":"g:Map","@value":[]}}}

он отлично работает с этим кодом.

      while IFS= read -r line
do
name="$line"
#echo "Orgid name is "$i": $name"
curl -X POST https://<Neptune_endpoint>:<port>/gremlin -d '{"gremlin":"g.V().has(\"system.tenantId\",\"'$name'\").count()"}' >> VerticesCount1
echo >> VerticesCount1
done < Orgid.txt
Другие вопросы по тегам