Я могу отправить документ bash прямо в qsub
следующим образом:
my_var="foobar"
qsub <<HERE
#!/bin/bash
echo "$my_var"
HERE
И я могу запустить R-скрипт с вот таким вот документом bash:
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
И я могу отправить сохраненный скрипт R напрямую в qsub
без скрипта-оболочки bash, например:
qsub -wd $PWD -o :${PWD}/ -j y -b y Rscript my_script.R "arg_1" "arg_2"
где my_script.R
выглядит так:
$ cat my_script.R
#!/usr/bin/env Rscript
cat("\nR loaded\n")
args <- commandArgs(TRUE)
cat("Script args are:\n")
args
sessionInfo()
Однако, если я попытаюсь объединить это и отправить сценарий R напрямую в виде 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
... это не работает. У меня ничего не выходит. Сообщений об ошибках тоже нет.
Есть ли способ сделать это? Также интересует то же самое для Python. Я подумывал о том, чтобы попробовать вложенные heredocs, но потребность в буквальном отступе \t
не будет работать, поскольку все мои IDE автоматически заменяют их пробелами.
Также используется Sun Grid Engine qsub
#!
сценарии либо для/usr/bin/Rscript
, либо для моего любимого/usr/bin/r
из littler (и в CRAN здесь). Этот последний также делаетstdin
, так что вы можете попытаться втиснуть в него свои документы. - person Dirk Eddelbuettel   schedule 27.01.2017/usr/bin/R
, это сам сценарий оболочки. Отсюда и мои намеки на альтернативы... - person Dirk Eddelbuettel   schedule 27.01.2017qsub
обрабатывает стандартный ввод в двоичном режиме. - person user5359531   schedule 27.01.2017