Je peux soumettre un heredoc bash directement à qsub
comme ceci:Comment qsub un script R comme un heredoc?
my_var="foobar"
qsub <<HERE
#!/bin/bash
echo "$my_var"
HERE
Et je peux exécuter un script R avec un heredoc bash comme ceci:
my_var="foobar"
Rscript - "arg1" "arg2" <<E0F
## R code
cat("\nR loaded\n")
args <- commandArgs(TRUE)
cat("Script args are:\n")
args
print("$my_var")
sessionInfo()
E0F
Et je peux soumettre un script R sauvé directement à qsub
sans un script wrapper bash, comme ceci:
qsub -wd $PWD -o :${PWD}/ -j y -b y Rscript my_script.R "arg_1" "arg_2"
où my_script.R
regards comme ceci:
$ cat my_script.R
#!/usr/bin/env Rscript
cat("\nR loaded\n")
args <- commandArgs(TRUE)
cat("Script args are:\n")
args
sessionInfo()
Cependant, si j'essaie de combiner et de soumettre le script R directement comme heredoc ....
my_var="foobar"
qsub -wd $PWD -o :${PWD}/ -j y -b y Rscript - "foo" "bar" <<E0F
#!/usr/bin/env Rscript
cat("\nR loaded\n")
args <- commandArgs(TRUE)
cat("Script args are:\n")
args
print("$my_var")
sessionInfo()
E0F
... ça ne fonctionne pas. Je n'ai rien de sortie. Pas de messages d'erreur non plus.
Existe-t-il un moyen de le faire? Également intéressé par la même chose pour Python. Je pensais essayer des heredocs imbriqués, mais le besoin d'indentation littérale ne fonctionnera pas bien puisque mes IDE les remplacent tous automatiquement par des espaces.
Aussi est d'utiliser Sun Grid Engine qsub
Pourquoi? Il suffit d'écrire les bons scripts '#!' Pour '/ usr/bin/Rscript' ou, mon préféré,'/usr/bin/r' dans [littler] (http://dirk.eddelbuettel.com/code/littler. html) (et sur CRAN [ici] (https://cran.r-project.org/package=littler)). Ce dernier fait aussi 'stdin', donc vous pourriez essayer d'y glisser vos heredocs. –
Reproductibilité et documentation. Je veux que mon code R et Python soit intégré au script bash environnant et au bloc-notes Markdown. Quand j'ai plusieurs fichiers de script pour garder une trace des choses deviennent facilement confus et désordonné. – user5359531
"Vouloir seul ne le fait pas." Regardez la source de '/ usr/bin/R', elle est elle-même un script shell. D'où mes allusions à des alternatives ... –