如何用循环批量生成按突变体分组的.sh模拟脚本
批量生成模拟任务Shell脚本方案
1. 准备突变体列表
先将100个突变体整理成纯文本文件mutants.txt,每行存放一个突变体名称,示例如下:
TP53 NFKB ABL1 BRCA1 EGFR # 剩余95个突变体依次写入
2. 编写自动生成脚本的Shell脚本
创建gen_run_scripts.sh文件,内容如下:
#!/bin/bash # 配置参数 MUTANT_FILE="mutants.txt" # 突变体列表文件路径 GROUP_SIZE=5 # 每个Shell脚本包含的突变体数量 SCRIPT_PATH="path_to_script/the_script" # 替换为实际的the_script路径 # 定义命令模板 CMD_TEMPLATE='node_list="Positive,Negative" for nodes in $node_list; do python3.7 %s -m "file_mutation_%s.csv" -r "results_mutation_%s.csv" done ' # 初始化分组计数器与临时存储 group_num=1 current_group=() # 遍历突变体列表生成脚本 while read -r mutant; do [[ -z "$mutant" ]] && continue # 跳过空行 current_group+=("$mutant") # 当前组达到指定数量时生成脚本 if [[ ${#current_group[@]} -eq $GROUP_SIZE ]]; then script_name="run_sim_${group_num}.sh" echo "#!/bin/bash" > "$script_name" echo "" >> "$script_name" for m in "${current_group[@]}"; do printf "$CMD_TEMPLATE" "$SCRIPT_PATH" "$m" "$m" >> "$script_name" echo "" >> "$script_name" done chmod +x "$script_name" echo "已生成: $script_name" current_group=() ((group_num++)) fi done < "$MUTANT_FILE" # 处理剩余不足一组的突变体 if [[ ${#current_group[@]} -gt 0 ]]; then script_name="run_sim_${group_num}.sh" echo "#!/bin/bash" > "$script_name" echo "" >> "$script_name" for m in "${current_group[@]}"; do printf "$CMD_TEMPLATE" "$SCRIPT_PATH" "$m" "$m" >> "$script_name" echo "" >> "$script_name" done chmod +x "$script_name" echo "已生成: $script_name" fi
3. 执行生成操作
- 给生成脚本添加执行权限:
chmod +x gen_run_scripts.sh - 运行脚本自动生成所有任务Shell文件:
./gen_run_scripts.sh
执行完成后,会得到run_sim_1.sh至run_sim_20.sh(100个突变体分20组),每个文件包含对应5个突变体的循环执行命令。
内容的提问来源于stack exchange,提问作者Rina
相关产品推荐
相关产品推荐

