当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R shQuote 在 OS Shell 中使用的引号字符串


R语言 shQuote 位于 base 包(package)。

说明

引用要传递给操作系统 shell 的字符串。

用法

shQuote(string, type = c("sh", "csh", "cmd", "cmd2"))

参数

string

字符向量,通常长度为 1。

type

字符:shell 引用的类型。支持部分匹配。 "cmd""cmd2" 指的是 Windows shell。 "cmd" 是 Windows 下的默认值。

细节

类 Unix 下支持的默认引用类型是 Bourne shell sh 。如果字符串不包含单引号,我们可以用单引号将其括起来。否则,字符串会被双引号括起来,这会抑制除美元、反引号和反斜杠之外的元字符的所有特殊含义,因此这些(当然还有双引号)前面都有反斜杠。这种类型的引用也适用于 bashkshzsh

另一种类型的引用适用于C-shell(cshtcsh)。再一次,如果字符串不包含单引号,我们可以用单引号将其括起来。如果它确实包含单引号,我们可以使用双引号,前提是它不包含美元或反引号(并且我们需要转义反斜杠、感叹号和双引号)。作为最后的手段,我们需要将字符串分割成不包含单引号的片段(有些可能是空的),并用单引号括住每个片段,并用双引号括起单引号。

在 Windows 中,命令行解释是由应用程序和 shell 完成的。它可能取决于所使用的编译器:https://learn.microsoft.com/en-us/cpp/c-language/parsing-c-command-line-arguments?view=msvc-160 给出了 Microsoft 的 C 运行时规则。这可能取决于应用程序程序员的想法:检查其文档。 type = "cmd" 根据 Microsoft 的规则准备字符串作为参数进行解析,并使 shQuotesystemsystem2 一起使用时可以安全地用于许多应用程序。它用双引号将字符串括起来,并用反斜杠转义内部双引号。任何尾随反斜杠和最初位于双引号之前的反斜杠都会加倍。

Windows cmd.exe shell(默认与 shell 一起使用)使用 type = "cmd2" 引用:特殊字符以 "^" 为前缀。在某些情况下,应使用两种类型的引用:首先用于应用程序,然后使用 type = "cmd2" 引用 cmd.exe 。请参阅下面的示例。

string 长度相同的字符向量。

例子

test <- "abc$def`gh`i\\j"
cat(shQuote(test), "\n")
## Not run: system(paste("echo", shQuote(test)))
test <- "don't do it!"
cat(shQuote(test), "\n")

tryit <- paste("use the", sQuote("-c"), "switch\nlike this")
cat(shQuote(tryit), "\n")
## Not run: system(paste("echo", shQuote(tryit)))
cat(shQuote(tryit, type = "csh"), "\n")

## Windows-only example, assuming cmd.exe:
perlcmd <- 'print "Hello World\\n";'
## Not run: 
shell(shQuote(paste("perl -e", 
                    shQuote(perlcmd, type = "cmd")),
              type = "cmd2"))

## End(Not run)

参考

Loukides, M. et al (2002) Unix Power Tools Third Edition. O'Reilly. Section 27.12.

Discussion in PR#16636.

也可以看看

base Quotes用于引用R代码。

sQuote 用于引用英文文本。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Quote Strings for Use in OS Shells。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。