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

Snakemake中--rerun-triggers通过bash变量传递报错问题

解决Snakemake通过bash变量传递--rerun-triggers参数的问题

问题原因

bash变量展开时,{mtime,input,params}会被作为一个整体字符串传递给Snakemake,而非解析为多个独立的触发选项,导致Snakemake将其识别为无效参数。

可行解决方案

方案1:使用Bash数组(推荐,安全可靠)

通过数组存储参数,确保每个选项被作为独立参数传递:

# 定义数组
snakemake_extra=(--rerun-triggers mtime input params)

# 执行命令
snakemake "${snakemake_extra[@]}" -pr --snakefile Snakefile --configfile config.yaml -c 20 -n

数组展开后会将--rerun-triggers、mtime、input、params分别作为独立参数传递,Snakemake可正确识别每个触发选项。

方案2:使用逗号分隔的参数值

Snakemake支持通过逗号直接分隔多个--rerun-triggers选项,修改变量定义即可:

# 修改变量定义
snakemake_extra="--rerun-triggers mtime,input,params"

# 执行命令(保持原有格式)
snakemake $snakemake_extra -pr --snakefile Snakefile --configfile config.yaml -c 20 -n

此时传递的参数为--rerun-triggers和mtime,input,params,Snakemake会自动解析逗号分隔的内容为多个有效选项。

方案3:使用eval展开大括号(仅变量内容可控时使用)

通过eval让Bash预先展开变量中的大括号,转换为独立参数:

# 保持原有变量定义
snakemake_extra="--rerun-triggers {mtime,input,params}"

# 用eval执行命令
eval snakemake "$snakemake_extra" -pr --snakefile Snakefile --configfile config.yaml -c 20 -n

注意:eval会执行变量中的所有命令,若变量内容不可控存在安全风险,仅在确认变量无恶意内容时使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:45:44