Dockerfile中的多行Rscript
我正在尝试用R构建docker映像,我希望能够以一种干净、易于阅读的方式跨多行完成我的包安装步骤,但是bash似乎不喜欢这种方法,因为不知道结尾在哪里 有没有办法将这一长行代码分割成多行Dockerfile中的多行Rscript,r,bash,docker,rscript,R,Bash,Docker,Rscript,我正在尝试用R构建docker映像,我希望能够以一种干净、易于阅读的方式跨多行完成我的包安装步骤,但是bash似乎不喜欢这种方法,因为不知道结尾在哪里 有没有办法将这一长行代码分割成多行 Rscript -e 'devtools::install_cran(c("tidytext","janitor","corrr","officer","devtools","pacman"))' 也许是这样的: Rscript -e 'devtools::install_cran(c("tidytext",
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\u cran
。我看到其他人只是通过Rscript调用R脚本,但我希望看到Dockerfile中的所有安装步骤,而不是在容器中复制和运行外部R脚本。谢谢你的帮助
Rscript test.R
您可以查看相当多的Docker参考文件。以下是我们制作官方r-base图像的一部分:
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ed \
less \
locales \
vim-tiny \
wget \
ca-certificates \
fonts-texgyre \
&& rm -rf /var/lib/apt/lists/*
现在这是针对apt
包的,但是来自CRAN的R包的工作方式是相同的:一条长长的线,被反斜杠分开。为此,我们倾向于使用中的install.r
或install2.r
。因此,您的代码将成为
install.r tidytext \
janitor \
corrr \
officer \
devtools \
pacman
一个被低估的方面是,事实上,你可以从Debian或Ubuntu中获得一些二进制文件,但我把寻找这些文件的工作留给你自己 BASH会将换行符解释为命令的结尾 在BASH中(我假设您正在使用它),反斜杠后跟换行符被解释为该行的延续。除非它在单引号内 所以 将被解释为两个命令
Rscript -e 'devtools::install_cran(c("tidytext","janitor",
及
两者都不是很好的形式
此外,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\"))"
使用双引号。啊,非常有用,谢谢。有什么地方可以让我了解更多的信息吗?这可能就足够了。特别是这一部分。编辑了这篇文章,指出\+结束行将在单引号内被忽略。“有什么地方我可以获取更多信息吗?”每一个shell编程资源。
Rscript -e "devtools::install_cran(c('tidytext','janitor', \
'corrr','officer','devtools','pacman'))"
Rscript -e "devtools::install_cran(c(\"tidytext\",\"janitor\", \
\"corrr\",\"officer\",\"devtools\",\"pacman\"))"