Пакетная работа на блеске не работает: 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)