Passer des arguments de ligne de commande via sbatch

Supposons que j'ai suivantes simple script bash qui je veux soumettre à un lot de serveur par le biais de SLURM:

#!/bin/bash

#SBATCH -o "outFile"$1".txt"
#SBATCH -e "errFile"$1".txt"

hostname

exit 0

Dans ce script, je veux simplement écrire la sortie de hostname sur un fichier texte dont le nom complet je de contrôle via la ligne de commande, comme suit:

login-2:jobs$ sbatch -D `pwd` exampleJob.sh 1
Submitted batch job 203775

Malheureusement, il semble que mon dernier argument de ligne de commande (1) n'est pas analysée par sbatch, étant donné que les fichiers créés n'ont pas le suffixe je suis à la recherche et à la chaîne "$1" est interprété littéralement:

login-2:jobs$ ls
errFile$1.txt  exampleJob.sh outFile$1.txt

J'ai regardé à travers les lieux de DONC et d'ailleurs, mais je n'ai pas eu de chance. Essentiellement, ce que je cherche est l'équivalent de la -v commutateur de la qsub utilitaire en Couple permis aux clusters.

Modifier: Comme mentionné dans le fil de commentaires, j'ai résolu mon problème de la manière dure: au lieu d'avoir un seul script qui serait soumis à plusieurs reprises pour le serveur de traitement par lots, chacun avec différents arguments de ligne de commande, j'ai créé un "script" que simplement l'écho et redirigé le même contenu sur différents scripts, le contenu de chaque être modifiée par le paramètre de ligne de commande passé. Ensuite, j'ai soumis tous ceux de mon serveur de traitement par lots grâce à sbatch. Cependant, cela ne répond pas à la question d'origine, j'ai donc hésitez pas à l'ajouter comme une réponse à ma question ou marquer cette question résolu.

Je ne sais pas SLURM. Pouvez-vous simplifier le script dans touch outfile${1}.txt lignes, de sorte que nous pouvons essayer de reproduire l'erreur et la corriger?
Le 1 est transmis le script, mais il n'est pas considéré pour le nom des fichiers que slurm pré-traite le fichier pour obtenir les drapeaux, mais la variable devrait être disponible à l'intérieur du script. Comment faites-vous cela sur le Couple?
Votre solution a fonctionné dans le cas de touch, c'est l'argument que je passe par sbatchest correctement lu par le script comme $1. Cependant, il semble que $1 est interprété littéralement par sbatch dans le cas de -o et -e, tel que je me retrouve avec des fichiers tels que des outFile${1}.txtsur le disque. @CarlesFenoy: je crois que vous avez raison dans ce que vous dites dans ce SLURM pré-traite le fichier pour obtenir le -o et -e drapeaux (voir ma réponse à @WalterA ci-dessus). En Couple, vous pourriez faire quelque chose comme qsub -D 'pwd' -v var=1 script.sh et $var aurait la valeur de 1 dans script.sh.
Je devrais aussi mentionner que j'ai résolu mon problème à la dure, c'est-à-créer un tas de scripts avec un "script" que le simple fait écho à bon nombre de lignes de contenu pour tenir compte de tous les différents paramètres de ligne de commande que je voulais transmettre à un seul script, et ensuite soumis tous à mon lot de serveur par le biais de sbatch. Ceci, cependant, ne pas répondre à la question à portée de main, donc je hésitez pas à l'ajouter à ma propre réponse à la question d'origine. Je vais aussi faire un edit dans le post original pour en tenir compte.

OriginalL'auteur Jason | 2014-12-30