Вам необходимо удалить двойную кавычку из ключевого слова EOT
.
curl -XGET 'stg-myserver.stg.xyz2.bdd.local:9200/stg_index-2020.03.10/_data?format=csv&fields_name=personId,totalPrice,regDatetime&_source=' -d << EOT
{
...
}
EOT
Как сказано в man bash
:
Если слово без кавычек , все строки здесь-документа подвергаются расширению параметров (...)
Тем не менее, я советую использовать инструмент, который JSON знает, чтобы подделать вашу дату, как jq
:
jq -c -n --arg s "$START_TIME" --arg e "$END_TIME" '{ query: { bool: { filter: [ { range: { regDateTime : { gte: $s, lte: $e } } } ] }}}'
Вставляет только время начала s
и время окончания e
в данные JSON. Преимущество состоит в том, что вы уверены, что данные верны JSON.
Это можно интегрировать с вашей командой следующим образом:
START_TIME='2020-03-11T08:00:00+09:00'
END_TIME='2020-03-11T08:59:59+09:00'
json_data=$(jq -c -n --arg s "$START_TIME" --arg e "$END_TIME" '{ query: { bool: { filter: [ { range: { regDateTime : { gte: $s, lte: $e } } } ] }}}')
url='stg-myserver.stg.xyz2.bdd.local:9200/stg_index-2020.03.10/_data?format=csv&fields_name=personId,totalPrice,regDatetime&_source='
curl -XGET "$url" -d "$json_data"