【问题标题】:shell variables in qsubqsub 中的 shell 变量
【发布时间】:2014-12-27 00:20:08
【问题描述】:

我有这个脚本,当我用 sh 调用它时它可以正常工作,但当我使用 qsub 时它会失败。有人可以帮我调试吗?网上好像没找到答案

#!/bin/bash
#$ -S /bin/bash
#$ -V
#$ -cwd
#$ -l h_vmem=6G
#$ -N MHCIp

if [ $# -lt 2 ]
then
   echo need 2 arguments
   echo "USAGE : qsub run_MHCIprediction.sh <input_peptide_file> <MHCI_allele_file>"
   exit 0
fi

input_file=$1
allele_file=$2
output_prefix=`echo ${input_file} | awk -F"." '{print $1}'`

while read -u 10 allele strip_allele
do
    /inside/depot4/users/arjun/tools/IEDB/mhc_i/src/predict_binding.py \
            IEDB_recommended \
            ${allele} \
            9 \
            ${input_file} > ${output_prefix}"_"${strip_allele}".tsv"
done 10<${allele_file}

input_file 包含诸如

之类的值
>pept1
ABDGSHADSDJASDAJ
>pept2
AHSYEHDBDJSJAKSK

allele_file 看起来像

HLA-A*01:01    HLA-A_01_01
HLA-B*03:02    HLA-B_03_02

【问题讨论】:

  • 这是sh 还是bash 脚本?
  • 请发布您用于 qsub 脚本的行以及在 PBS 下执行时遇到的错误。

标签: bash variables sh qsub


【解决方案1】:

如果其他人遇到此问题,则有问题的脚本来自IEDB MHC I 类绑定预测脚本,并且当脚本尝试从 /dev/null 管道读取的标准输入时引入错误/ 在 LSF 作业的上下文中,最终结果是在参数列表的末尾添加一个空字符串。

相关的代码部分如下所示,您需要添加的行是“args = filter(None, args)”

...
        parser = OptionParser(usage=usage)
        parser.add_option("-m", dest="filename_mhc",
                          help="FILE containing a single MHC sequence in fasta format.", metavar="FILE")
        (options, args) = parser.parse_args()

        # If there's input ready, do something, else do something
        # else. Note timeout is zero so select won't block at all.
        if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
            infile = sys.stdin.readline().strip()
            args.append(infile)

        args = filter(None, args) #strip blank arguments that might be introduced by LSF

        if (len(args) == 0):                               self.commandline_help()
...

【讨论】:

  • 好收获。当我弄清楚时,我忘了“自我回答这个问题”。
猜你喜欢
  • 1970-01-01
  • 2021-07-28
  • 2011-12-26
  • 2021-06-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
相关资源
最近更新 更多