2016-07-13 3 views
0

Я не уверен, что проблема с моим скриптом slurm - сообщения об ошибках, которые я получаю, являются двусмысленным перенаправлением для моего ввода и команды $, которые не найдены, когда я пытаюсь определить мои переменные ,Slurm - неоднозначное перенаправление

#!/bin/bash 
#SBATCH --job-name=gim 
#SBATCH --time=24:00:00 
#SBATCH --ntasks=20 
#SBATCH --ntasks-per-node=2 
#SBATCH --cpus-per-task=1 
#SBATCH -o output_%A_%a.out #Standard Output 
#SBATCH -e output_%A_%a.err #Standard Error 

module load program 

input= gim${SLURM_ARRAY_TASK_ID}.gjf 
output= gim${SLURM_ARRAY_TASK_ID}.log 

program $input > $output 

Путь я бегу это:

sbatch --array=1-500 ./slurm.job 
+0

'input = foo' работает' foo' как команда с 'input', установленным как переменная среды с пустым значением только для продолжительности этого единственного выполнения. –

ответ

2

Пробелы вопросы:

#!/bin/bash 
# ...etc... 

input=gim${SLURM_ARRAY_TASK_ID}.gjf 
output=gim${SLURM_ARRAY_TASK_ID}.log 

program "$input" > "$output" 

Обратите внимание на отсутствие пробелов вокруг = знак для заданий. Пробел имеет значение:

foo = bar # this runs "foo" with "=" as the first argument and "bar" as the second 
foo =bar # this runs "foo" with "=bar" as its first argument 
foo= bar # this runs "bar" as a command with "foo" as an empty string in its environment 
foo=bar # this assigns the value "bar" to the shell variable "foo" 
+0

спасибо, еще один урок узнал :) – EA00

+1

Кстати, рассмотрите возможность использования http://shellcheck.net/ (также устанавливаемый инструмент), который автоматически определит этот класс ошибок (и других). –

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

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