Rmarkdown无法正确重现bash代码

时间:2016-12-20 21:07:40

标签: r bash knitr r-markdown grass

我使用Rmarkdown显示一些bash代码:

---
title: "Untitled"
author: "JPD"
date: "20 December 2016"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r gp.setup, engine= 'bash', eval=FALSE}

##Change names to remove dots
g.rename raster=gp_ortho.1,gp_ortho_1,gp_ortho.2,gp_ortho_2,\
gp_ortho.3,gp_ortho_3

##Group bands together
i.group --verbose group=gp_combo input=gp_ortho_1@gp1,gp_ortho_2@gp1,\
gp_ortho_3@gp1
```

然而,当针织到html时,g.rename线大多消失了。为了进行比较,下面的i.group命令正确显示:

knitted

这样做的g.rename代码行是什么?是.吗?

1 个答案:

答案 0 :(得分:3)

bash将点/句点(.)视为执行后续操作的命令,因此不是打印文字字符,而是查找名为12的文件,和3

我没有GRASS设置工作而没有启动会话,但我的猜测是,如果你这样做,你的脚本正确解释g.rename命令并查找你指定的光栅文件。

我假设您的Rmarkdown文件中没有设置GRASS,因此它只是打印g.rename...个字符,然后将.视为要执行的文件,因此不打印后面的内容。要使其正确打印,请在文件名中使用.以外的内容,设置Rmarkdown会话以将g.rename理解为命令,或使用\转义字符:

```{r gp-setup, engine="bash", eval=FALSE}
# Change names to remove dots

g.rename raster=gp_ortho\.1,gp_ortho_1,gp_ortho\.2,gp_ortho_2, \
gp_ortho\.3,gp_ortho_3

## Group bands together
i.group --verbose group=gp_combo input=gp_ortho_1@gp1,gp_ortho_2@gp1, \
gp_ortho_3@gp1
```