如何从shell脚本运行knitr

时间:2013-07-06 12:00:36

标签: r bash knitr

我必须从shell脚本运行knitr。但是我搞砸了。

我的shell脚本test.sh是:

#!/bin/bash

input=$1
echo Input $input

# I want to start the following when input is test.Rnw
# /usr/bin/Rscript -e   'library(knitr); knit("test.Rnw")'

cmd_start="'library(knitr);knit(\""
cmd_end="\")'"

echo /usr/bin/Rscript -e  $cmd_start$input$cmd_end
/usr/bin/Rscript -e  $cmd_start$input$cmd_end

运行时

  

./ test.sh test.Rnw

输出

 Input test.Rnw
 /usr/bin/Rscript -e 'library(knitr);knit("test.Rnw")'
 [1] "library(knitr);knit(\"test.Rnw\")" 

所以命令似乎没问题。但是R没有运行knitr。相反,它将输入作为变量处理。

运行

 /usr/bin/Rscript -e 'library(knitr);knit("test.Rnw")'

做对了。

我错过了什么?

1 个答案:

答案 0 :(得分:6)

您的问题是双引号:$cmd_start$input$cmd_end变为'library(knitr);knit(\"test.Rnw\")'但不是'library(knitr);knit("test.Rnw")'

尝试以下方法:

cmd_start='library(knitr);knit("'
cmd_end='")'

/usr/bin/Rscript -e  $cmd_start$input$cmd_end

或者:

/usr/bin/Rscript -e "library(knitr); knit(\"${input}\")"