Пакетная работа на блеске не работает: awk: cmd. строка:1 "неожиданный перевод строки или конец строки"

Недавно я начал выполнять пакетные задания Python в системе Lustre.

Недавно я внес изменения в сценарий оболочки, что привело к ошибке:

awk: cmd. line:1: NR==
awk: cmd. line:1:     ^ unexpected newline or end of string

Сценарий выглядит следующим образом:

#$ -cwd


# Define parallel environment for N cores
#$ -pe openmp 4



# Validation level (e = reject on all problems)
#$ -w e

# Merge stdout and stderr streams: yes/no
#$ -j yes

#name of job (human-friendly)
#$ -N experiment

# array job parameters below:
# which job IDs in the array to run, eg 1-5 or 3
#$ -t 1
# how many jobs of the array to run at a time
#$ -tc 15


MYFILE=all_experiment_parameters.txt.$RANDOM
python Get_Parameter_Settings.py > $MYFILE
SEED=$(awk "NR==$SGE_TASK_ID" $MYFILE)
echo $SEED

python RunExperiment.py $SEED

Это похоже на синтаксис в примере, приведенном в разделе "Извлечение данных из i-й строки файла" здесь: http://wiki.gridengine.info/wiki/index.php/Simple-Job-Array-Howto.

Может ли кто-нибудь посоветовать значение сообщения об ошибке (я не понимаю, почему это предупреждение о "новой строке или конце строки", когда он указывает на середину моего кода), и как это исправить? Я уверен, что это тривиальное изменение, которое я сделал по ошибке, так как оно работало ранее.

2 ответа

Решение

Я понял, почему SGE_TASK_ID не был установлен. Я запускал сценарий оболочки, используя

./shell.sh

вместо того, чтобы отправить его в очередь с

qsub shell.sh

Так что абсолютная ошибка новичка.

Вы получаете ошибку:

awk: cmd. line:1: NR==
awk: cmd. line:1:     ^ unexpected newline or end of string

потому что ваша переменная окружения SGE_TASK_ID не установлен в этой строке вашего скрипта:

SEED=$(awk "NR==$SGE_TASK_ID" $MYFILE)
Другие вопросы по тегам