从Your first script开始
params.str = 'Hello world!'
process splitLetters {
output:
path 'chunk_*'
"""
printf '${params.str}' | split -b 6 - chunk_
"""
}
process convertToUpper {
input:
path x
output:
stdout
"""
cat $x | tr '[a-z]' '[A-Z]'
"""
#bash中的tr命令 ,执行字符串转换(替换)
#简单的查找替换
#如该句指令,指将小写字母转化为大写字母
#语法:管道输入 | tr '[SET1]' '[SET2]'
#这里,SET1 代表要在文本中找到的字母,SET2 代表要替换的字母。
#tr -d 用于删除指定的字符
#tr -c 用于将连续重复的指定字符变唯一
}
workflow {
splitLetters | flatten | convertToUpper | view { it.trim() }
}
''是针对字符的,比如a;而""是针对字符串的,比如"hello"。而shell呢,主要是用c/c++实现的,所以在shell里,""和''是有区别的。
单引号限制最大,任何的字符都会原样输出,变量是无效的
双引号比较友好,可以引用,也可以有转义字符
例子:
当您需要访问脚本中的系统环境变量时,您有两个选择。
如果不需要访问任何 Nextflow 变量,则可以使用单引号定义脚本块:
process printPath {
'''
echo The path is: $PATH
'''
}
否则,您可以使用双引号定义脚本,并通过以下方式转义系统环境变量 用反斜杠字符作为前缀,如以下示例所示:\
process doOtherThings {
"""
blastp -db \$DB -query query.fa -outfmt 6 > blast_result
cat blast_result | head -n $MAX | cut -f 2 > top_hits
blastdbcmd -db \$DB -entry_batch top_hits > sequences
"""
}
一句话解释:单引号直接传送给bash,双引号先尝试进行nextflow进行解析,获取类似$的关键字,完成替换(或识别完转义)后输送给bash
解释器:shebang
#!/usr/bin/perl
Nextflow脚本语言是Groovy编程语言的扩展。 Groovy是Java虚拟机的强大编程语言。下一个流 语法专门用于以声明方式简化计算管道的编写。
Nextflow可以执行任何一段Groovy代码或使用JVM平台的任何库。
其中含有很多脚本自带的常用变量
脚本自身也有一个解释器,以java为基础可以完成基本的编程操作
如条件判断:
if ()
{}
else
{}
字符串操作与python 支持 + 连接两个字符串
多行字符串使用
"""
string_line1
string_line2
"""
如果在多行字符串内的行末加上 \ 反斜杠会取消换行
"""
string_line1 \
string_line2
"""
这些都和基本的编程语言一致
评论 (0)