无法在 shell 脚本中的 gremlin 查询中传递变量

Unable to pass variable in gremlin query in shell script

我正在尝试连接到 Neptune DB 并使用 CURL 命令获取顶点详细信息。我有 shell 脚本。但不知何故,可变数据并没有通过它的 gremlin 查询。我有一个 Orgid.txt 文件,其中存在 tenantid,我的 shell 脚本读取该文件并将其传递给“名称”变量

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

这段代码运行良好。

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

与您的 other question 一样,我用一个简单的数据文件进行了测试,它工作正常。但是,请注意我如何更改 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":[]}}}