Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python lustre上的批处理作业不工作:awk:cmd。行:1“;意外换行符或字符串结尾“;_Python_Bash_Awk_Sungridengine - Fatal编程技术网

Python lustre上的批处理作业不工作:awk:cmd。行:1“;意外换行符或字符串结尾“;

Python lustre上的批处理作业不工作:awk:cmd。行:1“;意外换行符或字符串结尾“;,python,bash,awk,sungridengine,Python,Bash,Awk,Sungridengine,我最近开始在Lustre系统上运行Python批处理作业 我最近对shell脚本进行了更改,导致以下错误: 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 a

我最近开始在Lustre系统上运行Python批处理作业

我最近对shell脚本进行了更改,导致以下错误:

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行提取数据”一节中给出的示例中的语法:


有人能就错误消息的含义提出建议吗(我不明白为什么当指向代码中间时,它会发出“换行符或字符串结束”的警告),以及如何解决这个问题?我确信这是我错误地做的一个微不足道的更改,因为它在前面工作。

您得到了错误:

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)

我已经意识到为什么SGE_任务ID没有设置好。我正在使用

./shell.sh
而不是将其提交到具有

qsub shell.sh

这完全是初学者的错误

如何设置
$SGE_TASK_ID
?SGE在执行任务的环境中设置一个变量(“SGE_TASK_ID”),该变量可在作业脚本中使用,以标识作业任务(从)要使用的正确输入数据。。。所以我认为它是由Sun Grid Engines自动设置的…?感谢您的回复,但我认为这个变量是自动设置的,正如我在上面的评论中提到的那样?@user3140106错误消息显示它没有设置。我发现另一个堆栈溢出帖子问了类似的问题()似乎我需要找到为每个作业递增的变量数组ID,并将其设置为$SGE_TASK_ID。您知道如何找到它吗?最好将变量设置在
awk
code:
SEED=$(awk-v var=“$SGE_TASK_ID”'NR==var'$MYFILE)