Snakemake shell 奇怪的执行顺序
Snakemake shell strange execution order
我正在尝试通过 FTP 下载文件并在之后进行处理。
例如这样的规则
rule all:
output:
test_input = "ref/" + test_file
shell:
"""
ftp -ni {test_domain} <<-EOF 1> log.txt 2> log.txt
user anonymous " "
lcd ref
cd {test_path}
get {test_file}
# quit
EOF
ls
"""
这里有两个问题。
第一:在当前代码中 ls
将在 ftp 服务器端执行。
第二:如果我取消注释 quit
- none 我在 EOF
之后添加的命令将永远被执行。即使在常规 shell 脚本中也能正常工作。
我错过了什么?
似乎此处文档末尾缺少限制字符串,。这导致 ls
通过 ftp 在服务器上执行,并且 quit
命令停止进一步执行。
Snakemake 不会去除 shell 指令下字符串文字中的前导空格。为了让您的脚本按预期工作,您可以删除 shell
指令中的前导空格,或者确保 here-doc 中的任何前导空格只是文字制表符。
这是一个更新的脚本,可以为我生成预期的输出:
rule all:
output:
test_input = "ref/" + test_file
shell:
"""
ftp -ni {test_domain} <<EOF 1> log.txt 2> log.txt
user anonymous " "
lcd ref
cd {test_path}
get {test_file}
quit
EOF
ls
"""
我正在尝试通过 FTP 下载文件并在之后进行处理。 例如这样的规则
rule all:
output:
test_input = "ref/" + test_file
shell:
"""
ftp -ni {test_domain} <<-EOF 1> log.txt 2> log.txt
user anonymous " "
lcd ref
cd {test_path}
get {test_file}
# quit
EOF
ls
"""
这里有两个问题。
第一:在当前代码中 ls
将在 ftp 服务器端执行。
第二:如果我取消注释 quit
- none 我在 EOF
之后添加的命令将永远被执行。即使在常规 shell 脚本中也能正常工作。
我错过了什么?
似乎此处文档末尾缺少限制字符串,ls
通过 ftp 在服务器上执行,并且 quit
命令停止进一步执行。
Snakemake 不会去除 shell 指令下字符串文字中的前导空格。为了让您的脚本按预期工作,您可以删除 shell
指令中的前导空格,或者确保 here-doc 中的任何前导空格只是文字制表符。
这是一个更新的脚本,可以为我生成预期的输出:
rule all:
output:
test_input = "ref/" + test_file
shell:
"""
ftp -ni {test_domain} <<EOF 1> log.txt 2> log.txt
user anonymous " "
lcd ref
cd {test_path}
get {test_file}
quit
EOF
ls
"""