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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。