R中的mac shell命令带引号
我在Mac上使用RStudio。我想从R脚本文件中执行一个shell命令(终端命令)。我正在使用R中的系统函数来执行此操作。R中的mac shell命令带引号
但是,为了更进一步,我有一个shell命令,它有一个循环并传递一些参数。要传递这些参数,我需要使用引号。由于系统函数已经引用了引号,因此这些第二组引号会给出语法错误。例如
- 简单呼叫@终端:mkdir ch;当转换为R将是
系统( “MKDIR CH”)
使得在工作区中的CH文件夹。
- 循环呼叫@终端=
在* .pdf文件;做pdftotext“$ file”“$ file.txt”;完成。
在终端中的上述命令将在所述目录中的每个文件环路“pdftotext”命令。但是,正如你注意到的,这个调用已经有引号(文件变量),并且与R中的系统(“”)函数的引用冲突R
如何使用循环调用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']\""
再次,一切都很好。
希望有所帮助。
谢谢。有用 :) – BKS
在你的系统调用周围使用单引号,即''',或用'\\'转义双引号。 – brittenb
@brittenb请添加为答案。 – nrussell