1

当我在玩我的计算机集群时,我正在尝试开发一些脚本来帮助我保持集群上的计算机同步,就包、版本等而言。而不是登录到每台计算机并更新所有在这些软件包中,我想通过 SSH 运行系统调用。但是,我似乎无法正确调用系统调用。这是我正在尝试做的一个例子。

system(paste0("C:/PuTTY/plink.exe [SSH stuff] ",
              "RScript -e ",
              "install.packages(", shQuote("HydeNet"), 
              ", repos = ",
              shQuote("http://mirrors.nics.utk.edu/cran/"),
              ")"))

理想情况下,这会将HydeNet软件包安装在远程计算机上。我不断得到这个回报:

Error: unexpected end of input
Execution halted
Warning message:
running command 'RScript -e install.packages("HydeNet", repos = "http://mirrors.nics.utk.edu/cran/")' had status 1 

在我看来,这是一个不匹配的引号字符或不匹配的括号,但我只是看不到不匹配。我已经尝试了我能想到的所有单引号和双引号的排列。我还没有想到什么?

4

1 回答 1

1

您是否首先在本地尝试过该命令。

Rscriptis 的语法Rscript -e "expression in quotes"

并且看起来像install.packagesfromRscript期望包名称和单引号中的 repo。

使用这个命令

system(paste0("C:/PuTTY/plink.exe [SSH stuff] ",
       "RScript -e ","\"install.packages(", shQuote("'HydeNet'"), 
       ",repos = ",shQuote("'http://mirrors.nics.utk.edu/cran/'"),")\""))
于 2015-09-24T18:54:53.403 回答