2012-03-05 34 views
0

我有50個不同的fasta文件,我想使用程序(glsearch36)進行分析。 這些文件編號爲3163proph00.fa - 3163proph49.fa。如何在SGE上執行陣列作業 -

我想將這50個幾乎相同的作業提交給使用SGE排隊系統作爲陣列作業的集羣。

一個問題是SGE要求SGE_TASK_ID從1-50開始,所以我首先必須創建變量i並減去1才能得到0.然後創建j,因爲數字具有前導零。

我對bash不太熟練,所以我確信在從SGE_TASK_ID到i到j時,我已經犯了一些語法錯誤。

當我提交此文件時,出現以下錯誤「Illegal variable name。」。

任何幫助,將不勝感激。

謝謝

#!/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 

回答

1
  • $((...))不需要
  • 沒有space前後=
  • printf$(...)

    i=$((SGE_TASK_ID - 1)) 
    j=$(printf "%02d" "$i") 
    
+0

謝謝kev - 我做了你的修改,但仍然得到相同的非法變量名稱錯誤。 – user1249760 2012-03-05 13:05:16

+0

是否在運行腳本之前'輸出SGE_TASK_ID'。請在腳本中加入'echo $ SGE_TASK_ID'來進行調試。 – kev 2012-03-05 13:08:14

+0

正在分配SGE_TASK_ID。但是,我和j沒有被分配。我回應他們,他們是空白的。 sge任務ID 44 – user1249760 2012-03-05 13:24:32

0

我懷疑你的工作是在posix_compliant隊列/斌/ CSH作爲默認的shell中運行。因爲隊列是posix_compliant你的#!行將被忽略,並使用默認的shell。您可以使用-S指令覆蓋缺省shell到網格引擎。

#$ -S /bin/bash