Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用更多时产生神秘的冒号字符串_Bash_Bioinformatics_Slurm - Fatal编程技术网

Bash 使用更多时产生神秘的冒号字符串

Bash 使用更多时产生神秘的冒号字符串,bash,bioinformatics,slurm,Bash,Bioinformatics,Slurm,我试图在一组文件上运行一些生物信息学软件,但当我使用slurm提交时,该工具意外失败,显然是由于输入文件列表的交付不当。如果我在命令行上运行它,它似乎可以工作。我在下面替换了一些玩具文件名,因为实际名称很长。该工具称为RMAS,但该工具本身与我的问题无关 我使用.sbatch文件从命令行向集群提交作业,如下所示: sbatch job.sbatch group1.txt group2.txt 其中,两个文本文件包含以逗号分隔的数据文件列表。在.sbatch文件中,我将变量传递给生物信息学工具,

我试图在一组文件上运行一些生物信息学软件,但当我使用slurm提交时,该工具意外失败,显然是由于输入文件列表的交付不当。如果我在命令行上运行它,它似乎可以工作。我在下面替换了一些玩具文件名,因为实际名称很长。该工具称为RMAS,但该工具本身与我的问题无关

我使用.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`
我这样做是因为生物信息学工具显然无法直接解析文本文件

然而,它仍然不起作用,我认为这是由于我使用了backticks和more命令。我尝试通过添加echo语句进行调试

echo `more group1.txt`
输出应该是

sample1.bam,sample2.bam,sample3.bam
然而,实际输出是

:::::::::::::: group1.txt :::::::::::::: sample1.bam,sample2.bam,sample3.bam
因此,在我看来,这个莫名其妙的逗号字符串+文件名+逗号字符串在传递给生物信息学工具之前,就被预先添加到了我的文件列表中

在谷歌上搜索诸如“逗号串”+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)而不是使用backticks,这允许嵌套和其他一些选项,但在您的用例中这不重要。

感谢您的澄清。我忘记了
more
的交互功能,因为我的文本文件只有几行。知道为什么这只发生在slurm上下文中而不是从命令行中吗?@user74117没问题,欢迎您。请注意,这样就不需要感谢您的评论,但a+1(向上箭头)总是很受欢迎的。