mac shell R 中带引号的命令

mac shell commands in R with quotes

我在 Mac 上使用 RStudio。我想从 R 脚本文件中执行 shell 命令(终端命令)。我正在使用 R 中的系统函数来执行此操作。

然而,为了更进一步,我有一个 shell 命令,它有一个循环并传递一些参数。要传递这些参数,我需要使用引号。由于系统函数已经使用引号,因此第二组引号会出现语法错误。例如

  1. 简单调用@终端:mkdir ch;翻译成 R 时将是

    system("mkdir ch")

在 Rscript 中在工作区中创建一个 ch 文件夹。

  1. 循环调用@终端=

    for file in *.pdf; do pdftotext "$file" "$file.txt"; done.

在终端中,上述命令将在目录中的每个文件上循环执行 'pdftotext' 命令。但是正如您所注意到的,这个调用已经有引号(文件变量)并且与 R

中的 system("") 函数的引号冲突

如何通过循环调用 R 系统函数来执行此 shell 命令?

问题是,一旦包含第二个双引号,您就是在告诉 R 关闭字符串。以此示例字符串为例:

x = "I use air "quotes" like this..."
# Error: unexpected symbol in "x = "I use air "quotes"

它不喜欢嵌入的双引号。但是,如果我们用单引号替换双引号,我们的问题就消失了:

x = 'I use air "quotes" like this...' # or
x = "I use air 'quotes' like this..."

无论哪种方式,这两种类型的引号基本上都相互忽略,一切都很好。然而,有时这还不够。如果您在嵌入式引号中嵌入了引号怎么办?

x = "python some_syntax.py '["Me", "You", "Him"]'"
# Error: unexpected symbol in "x = "python some_syntax.py '["Me"

我们可以通过用反斜杠转义引号来解决这个问题。不过,我将反转使用单引号和双引号的位置,以尽量减少所需的转义次数。

x = "python some_syntax.py \"['Me', 'You', 'Him']\""

再次,一切都很好。

希望对您有所帮助。