首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Nextflow的"{“语法冲突

使用Nextflow的"{“语法冲突
EN

Stack Overflow用户
提问于 2022-11-18 04:54:03
回答 1查看 26关注 0票数 1

对于nextflow,尝试在nextflow块中运行一个循环,以从序列文件名中删除扩展名,并遇到语法错误。

代码语言:javascript
复制
params.rename = "sequences/*.fastq.gz"

workflow {
rename_ch = Channel.fromPath(params.rename)
RENAME(rename_ch)
RENAME.out.view()
}

process RENAME {
input:
    path read
output:
    stdout
script:
    """
    for file in $baseDir/sequences/*.fastq.gz; 
    do
        mv -- '$file' '${file%%.fastq.gz}'
    done
    """
}

错误:

代码语言:javascript
复制
- cause: Unexpected input: '{' @ line 25, column 16.
   process RENAME {
                  ^

试图使用其他方法,如basename,但没有效果。

EN

回答 1

Stack Overflow用户

发布于 2022-11-18 05:37:05

脚本块中,您只需转义Bash美元变量并使用双引号即可展开。例如:

代码语言:javascript
复制
params.rename = "sequences/*.fastq.gz"

workflow {
    
    RENAME()
}

process RENAME {

    debug true

    """ 
    for fastq in ${baseDir}/sequences/*.fastq.gz;
    do  
        echo mv -- "\$fastq" "\${fastq%%.fastq.gz}"
    done
    """
}

结果:

代码语言:javascript
复制
$ nextflow run main.nf 
N E X T F L O W  ~  version 22.04.0
Launching `main.nf` [crazy_brown] DSL2 - revision: 71ada7b0d5
executor >  local (1)
[71/4321e6] process > RENAME [100%] 1 of 1 ✔
mv -- /path/to/sequences/A.fastq.gz /path/to/sequences/A
mv -- /path/to/sequences/B.fastq.gz /path/to/sequences/B
mv -- /path/to/sequences/C.fastq.gz /path/to/sequences/C

另外,如果您觉得转义Bash变量很乏味,您可能需要考虑使用块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74485079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档