【问题标题】:Random String Inside of A JSON in BashBash中JSON内部的随机字符串
【发布时间】:2020-12-15 18:19:51
【问题描述】:

我想在我用来在 Elasticsearch 的 API 中发送 _bulk od 文档的 Bash 脚本中的 JSON 中插入一个随机字符串:

SECONDS=0;
for i in {0..1000}
do
echo "Number: $i \n"

curl --location --request POST 'localhost:9000/_bulk' \
--header 'Content-Type: application/json' \
--data-raw '{"index": {"_index": "yotam-les", "_type": "_doc", "_id": "A975463f711"}}
{"Amount": "3", "Quantity": "2", "Id": "A975463f711", "Client_Store_sk": "1109"}
{"index": {"_index": "yotam-les", "_type": "_doc", "_id": "975463943"}}
{"Amount": "7", "Quantity": "2", "Id": "975463943", "Client_Store_sk": "1109"}

'

done
echo "\n took " $SECONDS "seconds"
exit 0

例如,在这个 bash 脚本中,我想做类似的事情

“_id”:“

其中“_id”:“A975463f711”这部分是。 当然,我希望每次迭代都能随机生成 ID。

为了创建一个随机字符串,我知道我可以这样做:

chars=abcd1234ABCD
echo -n "${chars:RANDOM%${#chars}:1}"

但是如何在 JSON 中注入呢?

更清楚我的问题是当我尝试这样做时:

"_id": "${chars:RANDOM%${#chars}:1}"

因为 --data-raw '...' - 它只能包含原始字符串

感谢您的帮助。

【问题讨论】:

  • 您遇到了哪些具体问题?您需要知道如何生成随机字符串吗?或者如何将该字符串插入到 JSON 文档中?在检查之前是否已被问过之后,一次只问一个问题。
  • how to generate 10 million random strings in bash处给出了如何在bash中批量生成随机字符串
  • ...和what linux command can add new filed key value pair to a json file 告诉您如何将新数据插入JSON。
  • 因此,一个很好的起点是尝试将这两个问题的答案结合起来,然后询问您在该实施中遇到的具体问题,如果您遇到没有任何问题。
  • 也许达到了 bash 既不是最简单也不是最清晰的地步。作为使用 php 的示例,就像您的示例一样,几乎可以立即使用。

标签: json bash shell random


【解决方案1】:

但是如何在 JSON 中注入呢?

您在 '.... 单引号内。这样做:

  1. 结束单引号。
  2. 打开双引号。
  3. 注入它!
  4. 结束双引号。
  5. 打开单引号。

var=$RANDOM$RANDOM$RANDOM$RANDOM # ie. random string
curl .... \
--data-raw '{"index": {"_index": "yotam-les", "_type": "_doc", "_id": "'"$var"'"}}
#          ^                                                           ^^^^^^^^
{"Amount": "3", "Quantity": "2", "Id": "A975463f711", "Client_Store_sk": "1109"}
{"index": {"_index": "yotam-les", "_type": "_doc", "_id": "975463943"}}
{"Amount": "7", "Quantity": "2", "Id": "975463943", "Client_Store_sk": "1109"}
'

【讨论】:

  • 只有在您知道随机字符串可以包含哪些字符并且它们都不需要引用才能在 JSON 中有效时才有效。
  • 这很有帮助,但问题是每次迭代,我都会有在外部创建的相同随机字符串,而不仅仅是在我的范围内生成的随机变量。但我仍然可以使用它,同时使用“i”迭代器谢谢!
猜你喜欢
  • 2011-09-16
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
相关资源
最近更新 更多