在命令行运行以编程方式创建的Rscript调用

时间:2019-05-15 01:03:38

标签: r bash rscript

我有以下脚本:

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。但这似乎不是问题。

编辑

我尝试了下面给出的答案,但是得到了不同的结果!

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 个答案:

答案 0 :(得分:1)

下面的脚本对我有用。

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