Я хочу выбрать несколько моделей из папки и использовать их в сценарии sge для задания массива. Так что я следующий в SGE сценария:Использовать переменные в качестве параметров аргументов внутри сценария qsub
MODELS=/home/sahil/Codes/bistable/models
numModels=(`ls $MODELS|wc -l`)
echo $numModels
#$ -S /bin/bash
#$ -cwd
#$ -V
#$ -t 1-$[numModels] # Running array job over all files in the models directory.
model=(`ls $MODELS`)
echo "Starting ${model[$SGE_TASK_ID-1]}..."
Но я получаю следующее сообщение об ошибке:
Unable to read script file because of error: Numerical value invalid!
The initial portion of string "$numModels" contains no decimal number
Я также попытался использовать
#$ -t 1-${numModels}
и
#$ -t 1-(`$numModels`)
но ни один из этих работ. Любые предложения/альтернативные методы приветствуются, но они должны использовать функциональные возможности массива qsub.
Это действительно так, но мне бы очень хотелось, чтобы решение находилось внутри самого скрипта sge, а не завершено оболочным скриптом или помещением аргументов в командной строке. –
@ Сахил, это скорее всего невозможно. Сценарий SGE будет выполняться один раз для каждой задачи, от 1 до вычисленного общего числа задач. Таким образом, определение общего количества задач должно выполняться до выполнения сценария SGE. Это то, что Дэмиен ускользает. – Vince
@Vince, я следую этому, но -t в любом случае принимает статический числовой аргумент в скрипте SGE. Все, что я говорю, это заменить верхнюю границу переменной, она не будет изменяться с каждой задачей задания массива. Если для этого нет никаких положений, я, вероятно, просто буду писать номер вручную, чтобы избежать обертывания qsub sh, у которого есть свой набор проблем. –