shQuote
位于 base
包(package)。 说明
引用要传递给操作系统 shell 的字符串。
用法
shQuote(string, type = c("sh", "csh", "cmd", "cmd2"))
参数
string |
字符向量,通常长度为 1。 |
type |
字符:shell 引用的类型。支持部分匹配。 |
细节
类 Unix 下支持的默认引用类型是 Bourne shell sh
。如果字符串不包含单引号,我们可以用单引号将其括起来。否则,字符串会被双引号括起来,这会抑制除美元、反引号和反斜杠之外的元字符的所有特殊含义,因此这些(当然还有双引号)前面都有反斜杠。这种类型的引用也适用于 bash
、 ksh
和 zsh
。
另一种类型的引用适用于C-shell(csh
和tcsh
)。再一次,如果字符串不包含单引号,我们可以用单引号将其括起来。如果它确实包含单引号,我们可以使用双引号,前提是它不包含美元或反引号(并且我们需要转义反斜杠、感叹号和双引号)。作为最后的手段,我们需要将字符串分割成不包含单引号的片段(有些可能是空的),并用单引号括住每个片段,并用双引号括起单引号。
在 Windows 中,命令行解释是由应用程序和 shell 完成的。它可能取决于所使用的编译器:https://learn.microsoft.com/en-us/cpp/c-language/parsing-c-command-line-arguments?view=msvc-160 给出了 Microsoft 的 C 运行时规则。这可能取决于应用程序程序员的想法:检查其文档。 type = "cmd"
根据 Microsoft 的规则准备字符串作为参数进行解析,并使 shQuote
与 system
或 system2
一起使用时可以安全地用于许多应用程序。它用双引号将字符串括起来,并用反斜杠转义内部双引号。任何尾随反斜杠和最初位于双引号之前的反斜杠都会加倍。
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 showConnections 显示连接
- R strsplit 分割字符向量的元素
- R seq.Date 生成规则的日期序列
- R search 给出 R 对象的搜索路径
- R solve 求解方程组
- R scan 读取数据值
- R sprintf 使用 C 风格字符串格式化命令
- R stop 停止函数执行
- R sign 标志函数
- R svd 矩阵的奇异值分解
- R strtoi 将字符串转换为整数
- R source 从文件、连接或表达式中读取 R 代码
- R sQuote 引用文字
- R switch 选择替代方案列表之一
- R substitute 替换和引用表达式
- R strrep 重复字符向量的元素
- R split 分组并重新集合
- R slice.index 数组中的切片索引
- R sort 对向量进行排序或排序
- R standardGeneric 形式化方法系统 – 调度 S4 方法
- R sequence 创建序列向量
- R startsWith 字符串是否以另一个字符串开头或结尾?
- R system.file 查找 R 系统文件的名称
- R sample 随机样本和排列
- R strwrap 将字符串换行以设置段落格式
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Quote Strings for Use in OS Shells。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。