Запуск программно созданного вызова Rscript в командной строке - PullRequest
1 голос
/ 15 мая 2019

У меня есть следующий скрипт:

rstest

text=$1

cmd="Rscript -e \"a='$1'; print(a)\""
echo $cmd
$cmd

Это вывод, который я получаю при запуске:

balter@spectre3:~$ bash rstest hello
Rscript -e "a='hello'; print(a)"
Error: unexpected end of input
Execution halted

Однако, если я запускаю команду echoed напрямую, она работает нормально:

balter@spectre3:~$ Rscript -e "a='hello'; print(a)"

[1] "hello"

Я хотел бы понять, почему это так. Я пробовал различные комбинации цитирования переменных bash и добавления eval. Но, похоже, проблема не в этом.

EDIT

Я попробовал ответ, приведенный ниже, но получил другой результат!

balter@spectre3:~$ cat rstest
text=$1

cmd="Rscript -e \"a=$1; print(a)\""
echo $cmd
eval $cmd

balter@spectre3:~$ bash rstest
Rscript -e "a=; print(a)"
Error in cat("pointing to conda env:", env_name, "and lib location", lib,  :
  argument "env_name" is missing, with no default
Calls: startCondaEnv -> cat
Execution halted

1 Ответ

1 голос
/ 15 мая 2019

Ниже скрипт работал для меня.

text=$1

cmd="Rscript -e \"a='$1'; print(a)\""
echo $cmd
eval $cmd

Удаление eval выдало ту же ошибку, что и вы.

Rscript -e "a='Hello'; print(a)"
Error: unexpected end of input
Execution halted
...