mac shell R 中带引号的命令
mac shell commands in R with quotes
我在 Mac 上使用 RStudio。我想从 R 脚本文件中执行 shell 命令(终端命令)。我正在使用 R 中的系统函数来执行此操作。
然而,为了更进一步,我有一个 shell 命令,它有一个循环并传递一些参数。要传递这些参数,我需要使用引号。由于系统函数已经使用引号,因此第二组引号会出现语法错误。例如
- 简单调用@终端:mkdir ch;翻译成 R 时将是
system("mkdir ch")
在 Rscript 中在工作区中创建一个 ch 文件夹。
- 循环调用@终端=
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']\""
再次,一切都很好。
希望对您有所帮助。
我在 Mac 上使用 RStudio。我想从 R 脚本文件中执行 shell 命令(终端命令)。我正在使用 R 中的系统函数来执行此操作。
然而,为了更进一步,我有一个 shell 命令,它有一个循环并传递一些参数。要传递这些参数,我需要使用引号。由于系统函数已经使用引号,因此第二组引号会出现语法错误。例如
- 简单调用@终端:mkdir ch;翻译成 R 时将是
system("mkdir ch")
在 Rscript 中在工作区中创建一个 ch 文件夹。
- 循环调用@终端=
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']\""
再次,一切都很好。
希望对您有所帮助。