使用 more 时,Slurm 作业会产生神秘的冒号串
Slurm job producing mysterious string of colons when using more
我正在尝试 运行 一些生物信息学软件处理一组文件,但是当我使用 slurm 提交时该工具意外失败,显然是由于输入文件列表的传递不正确。如果我在命令行上 运行 它,它似乎可以工作。我在下面替换了一些玩具文件名,因为实际名称很长。该工具称为 rMATs,但该工具本身与我的问题无关。
我使用 .sbatch 文件从命令行将作业提交到集群,如下所示:
sbatch job.sbatch group1.txt group2.txt
其中两个文本文件包含以逗号分隔的数据文件列表。在 .sbatch 文件中,我将变量传递给生物信息学工具,如下所示:
#!/bin/bash
#SBATCH --time=00:00:20
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH -o ./o.%j
#SBATCH --err ./e.%j
#SBATCH --account=owner-guest
#SBATCH --partition=server-guest
bioinfotool.py -arg1 `more group1.txt` -arg2 `more group2.txt`
我这样做是因为生物信息学工具显然无法直接解析文本文件。
但是,它仍然不起作用,我认为这是由于我使用了反引号和 more 命令。我尝试通过添加 echo 语句来调试
echo `more group1.txt`
输出应该是
sample1.bam,sample2.bam,sample3.bam
然而,实际输出是
:::::::::::::: group1.txt :::::::::::::: sample1.bam,sample2.bam,sample3.bam
因此,在我看来,这个莫名其妙的逗号字符串 + 文件名 + 逗号字符串在传递到生物信息学工具之前被添加到我的文件列表中。
用谷歌搜索“"string of commas" + slurm”之类的东西没有结果,所以我求助于发布我自己的问题。
这些逗号是从哪里来的?有没有更好的方法从txt文件中提取文件名字符串?
谢谢
编辑:使用 'cat' 而不是 'more' 解决了问题。
more
是一个交互式程序,您看到的冒号很可能是冒号 more
用来表示它需要用户输入的冒号。
如果您只想转储文件内容,cat
就是您所需要的:.
bioinfotool.py -arg1 `cat group1.txt` -arg2 `cat group2.txt`
您也可以 运行 直接从终端 cat group1.txt
,看看您得到了您期望的结果。
请注意,在像 Bash 这样的 Bourne shell 中,您可以 `$(cat group1.txt) 而不是使用反引号,这允许嵌套和更多选项,但在您的用例中应该无关紧要.
我正在尝试 运行 一些生物信息学软件处理一组文件,但是当我使用 slurm 提交时该工具意外失败,显然是由于输入文件列表的传递不正确。如果我在命令行上 运行 它,它似乎可以工作。我在下面替换了一些玩具文件名,因为实际名称很长。该工具称为 rMATs,但该工具本身与我的问题无关。
我使用 .sbatch 文件从命令行将作业提交到集群,如下所示:
sbatch job.sbatch group1.txt group2.txt
其中两个文本文件包含以逗号分隔的数据文件列表。在 .sbatch 文件中,我将变量传递给生物信息学工具,如下所示:
#!/bin/bash
#SBATCH --time=00:00:20
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH -o ./o.%j
#SBATCH --err ./e.%j
#SBATCH --account=owner-guest
#SBATCH --partition=server-guest
bioinfotool.py -arg1 `more group1.txt` -arg2 `more group2.txt`
我这样做是因为生物信息学工具显然无法直接解析文本文件。
但是,它仍然不起作用,我认为这是由于我使用了反引号和 more 命令。我尝试通过添加 echo 语句来调试
echo `more group1.txt`
输出应该是
sample1.bam,sample2.bam,sample3.bam
然而,实际输出是
:::::::::::::: group1.txt :::::::::::::: sample1.bam,sample2.bam,sample3.bam
因此,在我看来,这个莫名其妙的逗号字符串 + 文件名 + 逗号字符串在传递到生物信息学工具之前被添加到我的文件列表中。
用谷歌搜索“"string of commas" + slurm”之类的东西没有结果,所以我求助于发布我自己的问题。
这些逗号是从哪里来的?有没有更好的方法从txt文件中提取文件名字符串?
谢谢
编辑:使用 'cat' 而不是 'more' 解决了问题。
more
是一个交互式程序,您看到的冒号很可能是冒号 more
用来表示它需要用户输入的冒号。
如果您只想转储文件内容,cat
就是您所需要的:.
bioinfotool.py -arg1 `cat group1.txt` -arg2 `cat group2.txt`
您也可以 运行 直接从终端 cat group1.txt
,看看您得到了您期望的结果。
请注意,在像 Bash 这样的 Bourne shell 中,您可以 `$(cat group1.txt) 而不是使用反引号,这允许嵌套和更多选项,但在您的用例中应该无关紧要.