You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用循环批量生成按突变体分组的.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. 执行生成操作

  1. 给生成脚本添加执行权限:
    chmod +x gen_run_scripts.sh
    
  2. 运行脚本自动生成所有任务Shell文件:
    ./gen_run_scripts.sh
    

执行完成后,会得到run_sim_1.sh至run_sim_20.sh(100个突变体分20组),每个文件包含对应5个突变体的循环执行命令。

内容的提问来源于stack exchange,提问作者Rina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:10:48