0

我有一个脚本,它首先定义一系列变量,然后使用这些变量运行程序。但是,该脚本被 Grid Engine 拒绝(它在工作站上工作,但作为阵列作业的一个组件,它需要通过 SGE 运行),因为变量被作为命令读取,导致“找不到命令”回复。

使用以下内容完全重现该错误:

#!/bin/bash
#$ -M not.real@email.address
#$ -m be
#$ -o /scratch/MScGWAS/Output
#$ -e /scratch/MScGWAS/Errors
#$ -q long.q
#$ -cwd
CHR=$1
CHUNK_START=`printf "%.0f" $2`
CHUNK_END=`printf "%.0f" $3`

输出示例:

CHR=1: Command not found.
CHUNK_START=1: Command not found.
CHUNK_END=5000000: Command not found.

如何让 GridEngine 使用 bash 作为该脚本的解释器?

4

2 回答 2

3

您不是使用 执行脚本bash,而是使用不同的 shell(例如tcsh)。

于 2013-08-02T13:41:06.783 回答
0

听起来您的 Grid Engine 集群配置了 posix_compliant 模式下的队列,并将 /bin/csh 作为默认 shell。在 posix_compliant 模式下,初始 #! 被忽略,您需要通过命令行开关或使用合适的 #$ 指令指定 shell。将以下行添加到您的脚本中应该可以工作:

#$ -S /bin/bash

于 2013-10-16T14:25:35.183 回答