1

我有 50 个不同的 fasta 文件,我想使用程序 (glsearch36) 进行分析。文件编号为 3163proph00.fa - 3163proph49.fa。

我想将这 50 个几乎相同的作业提交给使用 SGE 排队系统作为数组作业的集群。

一个问题是 SGE 要求 SGE_TASK_ID 介于 1-50 之间,因此我首先必须创建变量 i 并减去 1 以获得 0。然后我创建了 j,因为数字有前导零。

我对 bash 不太精通,所以我确信在从 SGE_TASK_ID 到 i 到 j 的过程中我犯了一些语法错误。

当我提交此文件时,我收到以下错误“非法变量名。”。

任何帮助,将不胜感激。

谢谢,

#!/bin/bash
#$ -cwd
#$ -t 1-50
#$ -e glsearch.err
#$ -o glsearch.out
#$ -N glsearch

#  really the files are 00-49
i=$(($SGE_TASK_ID - 1))
j= printf "%02d" "$i"
echo $j
/g/bor/x86_64/bin/glsearch36 -T 1 /g/bor/Viruses/3163_proph_split50/3163proph$j.fa /g/bor/Viruses/prophage_region.fna > glsearch_3163proph$j.txt
4

2 回答 2

2

我怀疑您的工作正在以 /bin/csh 作为默认 shell 的 posix_compliant 队列中运行。因为队列是 posix_compliant 你的 #! 行被忽略并使用默认外壳。您可以使用 Grid Engine 的 -S 指令覆盖默认 shell。

#$ -S /bin/bash
于 2013-10-16T14:50:53.530 回答
2
  • $在中((...))不需要
  • 没有space之前和之后=
  • 放入printf_$(...)

    i=$((SGE_TASK_ID - 1))
    j=$(printf "%02d" "$i")
    
于 2012-03-05T12:54:00.973 回答