2016-07-13 1 views
0

Je ne sais pas quel est le problème avec mon script slurm - les messages d'erreur que je reçois sont une redirection ambiguë pour mon $ input et une commande non trouvée pour quand j'essaie de définir mes variables .Slurm - redirection ambigu

#!/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 

La façon dont je le lance est:

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

'input = foo' exécute' foo' comme une commande avec 'input' défini comme une variable d'environnement avec une valeur vide pour la durée de cette seule exécution. –

Répondre

2

questions: Whitespace

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

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

program "$input" > "$output" 

Notez l'absence d'espaces autour du signe = pour les missions. Whitespace:

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

merci, une autre leçon apprise :) – EA00

+1

BTW, envisager de prendre l'habitude d'utiliser http://shellcheck.net/ (également un outil installable), qui permettra d'identifier cette classe de bogue (et d'autres) automatiquement. –