Передача команд расчета в кластерное задание - PullRequest
0 голосов
/ 06 сентября 2018

TL; DR Попытка передать вычисление вида $(($LSB_JOBINDEX-1)) на вызов кластера, но при этом появляется ошибка

$((2-1)): syntax error: operand expected (error token is "$((2-1))")

Как мне правильно выбраться или какая альтернативная командаиспользовать, чтобы это работало?

Подробно:

Для автоматизаций в моем рабочем процессе в настоящее время я пытаюсь написать сценарий, который автоматически выполняет команды bsub в предопределенныхorder.

Некоторые из этих команд являются заданиями массива, каждая из которых должна работать с файлом.Если обойтись без вызовов кластера, это будет выглядеть примерно так:

samplearray=(sample0.fasta sample1.fasta) #array of input files
for s in samplearray
    echo $s #some command on $s
done

для вызова кластера, я хочу использовать задание массива, команда для этого выглядит следующим образом:

bsub -J test[1-2] 'samplearray=(sample0.fastq sample1.fastq)' echo '${samplearray[$(($LSB_JOBINDEX-1))]}'

, который запускает два задания с LSB_JOBINDEX, установленными на 1 или 2 соответственно, поэтому мне нужно вычесть 1 для правильной индексации массива.

Проблема теперь в части $((...)), потому чтона узле выполняется ${samplearray[$\(\($LSB_JOBINDEX-1\)\)]}, которое не запускает вычисление, а вместо этого выдает ошибку:

$((2-1)): syntax error: operand expected (error token is "$((2-1))")

Что я здесь не так делаю?Я пробовал другие способы избежать и процитировать, но это было самое близкое к правильному решению

...