【发布时间】:2015-11-28 18:48:15
【问题描述】:
一个脚本在 R 上运行良好,但在使用来自 bash 的 R q -e 执行时失败。
The script 在 R 上运行良好的是:
R> sizes <- read.table(pipe("ls -l /tmp | awk '!/^total/ {print $5}'"))
R> summary(sizes)
来自 bash 的命令模式遵循 a previous discussion,但生成了错误消息:
R -q -e "x <- read.table(pipe("ls -l /tmp | awk '!/^total/ {print $5}'"));summary(x)"
awk: line 1: extra ')'
awk: line 1: extra ')'
awk: line 1: syntax error at or near ;
上面的命令有什么问题?
root@kali:~# uname -a
Linux kali 3.18.0-kali3-586 #1 Debian 3.18.6-1~kali2 (2015-03-02) i686 GNU/Linux
【问题讨论】:
-
假设您使用的是 bash。你的问题是shell引用。您需要在命令中转义第二个和第三个
"。像这样:\"。您也可以使用单引号而不是双引号,但是您将不得不转义 awk 命令周围的单引号。 -
@Bhas 你能给出正确的语法吗?
-
@Pascal。可能不是。我只是尝试转义内部双引号。这给出了来自 bash 的错误消息。转义
^和!似乎确实有效,但 R 给出了错误消息:Error: '\!' is an unrecognized escape ....。不转义!会生成 bash 错误消息:!/total/: event not found。所以似乎很难让这个工作。需要另一种解决方案,但我没有任何线索。真正的 bash 专家需要对此进行研究。 -
@Bhas 是的,我也按照你的建议尝试逃跑,但没有运气。
标签: r