r-在Bash中使用Rscript函数时如何转义双引号



如何转义双引号以在命令行上运行此代码块?代码中有问题的部分是paste('! LaTeX Error: File', paste0("`", x, "'.sty'"), 'not found.'))

Rscript 
-e "biosketch_pkgs <- list('microtype', 'tabu', 'ulem', 'enumitem', 'titlesec')" 
-e "lapply(biosketch_pkgs, function (x) {tinytex::parse_install(text=paste('! LaTeX Error: File', paste0("`", x, "'.sty'"), 'not found.'))})"

我试图使用下面的来转义双引号,但它返回unexpected EOF while looking for matching'`

Rscript 
-e "biosketch_pkgs <- list('microtype', 'tabu', 'ulem', 'enumitem', 'titlesec')" 
-e "lapply(biosketch_pkgs, function (x) {tinytex::parse_install(text=paste('! LaTeX Error: File', paste0("`", x, "'.sty'"), 'not found.'))})"

与其担心如何对特定字符串进行转义,不如考虑以一种完全不需要进行任何转义的方式对其进行处理。运行Rscript -告诉Rscript读取要在stdin上运行的源代码,而<<'EOF'则使所有内容直到下一行都只包含EOF,并在stdin中提供。(您可以将字符EOF替换为您选择的任何其他sigil,但重要的是要引用或转义此sigil,以指示shell不要以任何方式修改内容(。

Rscript - <<'EOF'
biosketch_pkgs <- list('microtype', 'tabu', 'ulem', 'enumitem', 'titlesec')
lapply(biosketch_pkgs, function (x) {
tinytex::parse_install(text=paste('! LaTeX Error: File',
paste0("`", x, "'.sty'"),
'not found.'))
})
EOF

如果确实有充分的理由使用Rscript -e,那么正确的转义会在双引号字符串中的反斜杠、双引号或其他对shell有意义的语法之前放上反斜杠,如下所示:

Rscript 
-e "biosketch_pkgs <- list('microtype', 'tabu', 'ulem', 'enumitem', 'titlesec')" 
-e "lapply(biosketch_pkgs, function (x) {tinytex::parse_install(text=paste('! LaTeX Error: File', paste0("`", x, "'.sty'"), 'not found.'))})"

相关内容

  • 没有找到相关文章

最新更新