【问题标题】:Running programmatically created Rscript call at command line在命令行运行以编程方式创建的 Rscript 调用
【发布时间】:2019-10-02 01:49:38
【问题描述】:

我有以下脚本:

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

【问题讨论】:

  • 我想你想要eval $cmd 而不仅仅是$cmd
  • 这并没有改变行为:(

标签: r bash rscript


【解决方案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

【讨论】:

  • 欢迎来到 Stackoverflow!我添加到原始帖子中,试图运行您提供的内容。我犯了同样的错误!我在 Ubuntu 18.10 中运行它。你?
  • 薄荷 19.1 和 R 3.6.0;我想在您使用 eval 之后,您更改了 cmd 并忘记在 $1 周围添加撇号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 2023-04-05
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多