Dockerfile中的多行Rscript

彼得根斯勒

我正在尝试使用R构建一个docker映像,并且我希望能够以一种清晰易读的方式跨越多行来突破我的软件包安装步骤,但是由于以下原因,bash似乎不喜欢这种方法不知道结尾)在哪里。

有没有办法使这行长代码分成多行?

Rscript -e 'devtools::install_cran(c("tidytext","janitor","corrr","officer","devtools","pacman"))'

也许是这样的:

Rscript -e 'devtools::install_cran(c("tidytext","janitor",
                              "corrr","officer","devtools","pacman"))'

这可能与Rscript有关吗?我尝试在每行末尾使用\,但仍然无法正常工作。

我知道install2.r可以逐行列出软件包,但是我希望有一个向量包,devtools::install_cran如果可能的话,传递给它们。我已经看到其他人只是通过Rscript调用而简单地引用了他们的R脚本,但是我想在Dockerfile中看到我的所有安装步骤,而不是在容器中复制和运行外部R脚本。谢谢你的帮助。

Rscript test.R
狄龙

BASH会将换行符解释为命令的结尾。

在BASH(我假设您正在使用)中,反斜杠后跟换行符被解释为该行的延续。除非在单引号内!

所以...

Rscript -e 'devtools::install_cran(c("tidytext","janitor",
                          "corrr","officer","devtools","pacman"))'

将被解释为两个命令...

Rscript -e 'devtools::install_cran(c("tidytext","janitor",

"corrr","officer","devtools","pacman"))'

两者都不是正确的格式。

此外,BASH中的单引号字符串将无法处理转义。他们只是假设您的文字是文字。因此,您不能在BASH中的单引号字符串内继续一行。

最重要的是,如果要在BASH中用引号引起来的字符串内继续,则必须使用双引号引起来的字符串。您的选择如下:

Rscript -e "devtools::install_cran(c('tidytext','janitor', \  
                'corrr','officer','devtools','pacman'))"

在BASH中使用双引号,在R或...中使用单引号

Rscript -e "devtools::install_cran(c(\"tidytext\",\"janitor\", \    
                \"corrr\",\"officer\",\"devtools\",\"pacman\"))"

都使用双引号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章