2014-11-07 5 views
0

Как передать массивы в виде списка переменных через скрипт задания qsub в среде PBS?Передача массивов в скрипт qsub

Например:

arr1=(1 2 3); arr2(a b c); qsub -v array1=("${arr1[@]}"), array2=("$arr2[@]") job_script.bash 

, где job_script.bash имеет массив переменных array1 и array2.

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

-bash: syntax error near unexpected token `(' 

я упускаю что-то в моем синтаксисе?

Я искал много форумов для помощи, но не нашел ничего относительно передающих массивов, как указано выше.

Может ли кто-нибудь помочь мне с вышеуказанной ситуацией?

+0

Объяснить qsub и PBS. – ceving

+0

qsub - это команда для отправки задания в кластеры с грид-вычислительной средой: http://docs.adaptivecomputing.com/torque/4-1-4/Content/topics/commands/qsub.htm PBS - это программное обеспечение для grid-вычислений который обеспечивает платформу для рабочих мест, которые должны быть отправлены в вычислительные кластеры и выполнены: http://www.pbsworks.com/Product.aspx?id=26 –

+0

Вот ссылка Википедии, чтобы объяснить PBS в условиях неспециалиста: http:// /en.wikipedia.org/wiki/Portable_Batch_System –

ответ

-1

Я использую qsub на ежедневной основе. может быть, немой ответ, но может быть проблема из-за пространства, которое вы оставляете между двумя переменными массива в аргументе -v?

т.е. ваша команда qsub должна быть "qsub -v array1 = (" $ {arr1 [@]} "), array2 = (" $ arr2 [@] ") job_script.bash"

+0

извините, это тоже не работает. Поэтому мне также нужен ответ на этот вопрос –

+1

, единственное, что я нашел, - это представить ваш массив как (строковую) переменную в виде списка, разделенного по строкам, а затем добавить строку в ваш скрипт pbs, который отделяет список в массив , например, если массив1 представляет собой список из 3-х файлов, создайте переменную, называемую 'array1list =" file1: file2: file3 "'. Затем в вашем скрипте pbs добавьте строку типа 'array1 = ($ (echo $ array1list | sed's /:// g ')), и вы можете использовать ее как массив в остальной части вашего кода –

0

Проблема как представляется, не быть с qsub, а вы не создали свой arr2 переменную правильно в оболочке ...

# You did this... 
arr1=(1 2 3); arr2(a b c); 

# You meant this... 
arr1=(1 2 3); arr2=(a b c); 

 Смежные вопросы

  • Нет связанных вопросов^_^