如何用Bash或Python脚本遍历文件并替换值生成请求命令?
批量生成JSON-RPC命令的Bash/Python实现
Bash 方案
通过循环读取文件每行内容,替换模板占位符即可,能完整保留数字的前导零:
#!/bin/bash # 定义命令模板,用XYZ作为占位符 TEMPLATE='echo '\''{"id":1,"jsonrpc":"2.0", "method":"dummy.endpoint","params":[123, [XYZ]]}'\'' | nc -N localhost 30000 | json_pp' # 逐行读取numbers.txt中的数字 while IFS= read -r num; do # 替换模板中的XYZ为当前数字并输出 echo "${TEMPLATE//XYZ/$num}" done < numbers.txt
说明:
IFS= read -r num确保读取时保留数字的前导零,不会被错误解析为八进制数- 如果需要直接执行生成的命令,将
echo替换为eval即可(仅当numbers.txt内容可信时使用)
Python 方案
利用Python字符串格式化功能实现替换,同时可灵活处理空行等异常情况:
仅输出命令
# 定义命令模板,用{}作为占位符 template = '''echo '{"id":1,"jsonrpc":"2.0", "method":"dummy.endpoint","params":[123, [{}]]}' | nc -N localhost 30000 | json_pp''' # 读取文件并逐行处理 with open('numbers.txt', 'r') as f: for line in f: num = line.strip() if num: # 跳过空行 print(template.format(num))
直接执行命令
如果需要自动执行生成的命令,可使用subprocess模块:
import subprocess template = '''echo '{"id":1,"jsonrpc":"2.0", "method":"dummy.endpoint","params":[123, [{}]]}' | nc -N localhost 30000 | json_pp''' with open('numbers.txt', 'r') as f: for line in f: num = line.strip() if num: subprocess.run(template.format(num), shell=True)
说明:
line.strip()去除每行的换行符和首尾空白,完整保留数字的前导零- 使用
shell=True时需确保numbers.txt内容安全,避免命令注入风险
内容的提问来源于stack exchange,提问作者IveGotCodeButImNotACoder
相关产品推荐
相关产品推荐

