首页 > 解决方案 > 从循环生成文件

问题描述

如何编写一个脚本来创建一个名为的文件,该文件post-data.txt将包含 3000 条 json 数据记录,如下所示:

{"firstName":"random_string_of10_characters","lastName":"random_string_of10_characters","email":"test+1@domain.com"}
{"firstName":"random_string_of10_characters","lastName":"random_string_of10_characters","email":"test+2@domain.com"}
{"firstName":"random_string_of10_characters","lastName":"random_string_of10_characters","email":"test+3@domain.com"}
...
{"firstName":"random_string_of10_characters","lastName":"random_string_of10_characters","email":"test+3000@domain.com"}

这是我到目前为止尝试过的

#!/bin/bash
file_location=/home/test/$1.json
if [ -e $policy ]; then
  echo "File $1.json already exists!"
else
  cat > $file_location <<EOF
{"firstName":"x","lastName":"y","email":"test@domain.com"}
EOF
fi

我对文本进行了硬编码,但我不知道如何生成随机字符串并增加电子邮件地址:(谢谢。

标签: bash

解决方案


您可以使用以下脚本执行此操作:

#!/bin/bash

file=post_data.json

name() {
    cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1
}

exec > "$file"
echo "{"

for i in {1..3000}; do
    echo "{\"firstName\": \"$(name)\", \"lastName\": \"$(name)\", \"email\": \"test+${i}@domain.com\"},"
done

echo "}"

这是文件内容:

{
{"firstName": "R0b24KRMCX", "lastName": "H4RpNLUMM0", "email": "test+1@domain.com"},
{"firstName": "WcThrrFUht", "lastName": "zEgMb2mMva", "email": "test+2@domain.com"},
{"firstName": "3NBRZPOeT0", "lastName": "fvuNtmhh7x", "email": "test+3@domain.com"},
...
{"firstName": "I8QD9sr8ke", "lastName": "Inbb4cUKqQ", "email": "test+3000@domain.com"},
}

推荐阅读