使用 rscript 表达破折号

Using rscript for expression with dash

我正在使用 rscript 来 运行 某些表达式,但我在处理某些带有破折号的情况时遇到了问题。一个简单的例子是:

$ rscript -e '-1'
ERROR: option '-e' requires a non-empty argument

添加括号是可行的 (rscript -e (-1)),但我不确定它们是否会被正确地括起来。

documentation 中写着

When using -e options be aware of the quoting rules in the shell used

所以我尝试对 bash 使用不同的引号规则,转义破折号或使用单引号,但它仍然不起作用。

$ rscript -e "\-1"
Error: unexpected input in "\"
Execution halted

有什么我遗漏的吗?

你误解了这里的一部分。 "Expression" 是 R 可以解析的东西,即:

$ R --slave -e '1+1'
[1] 2
$

你用 -1 遇到的是一个极端情况。你可以做到

$ R --slave -e 'a <- -1; a'
[1] -1
$

$ R --slave -e 'print(-1)'
[1] -1
$

对于实际参数解析,您需要像 docopt(我喜欢并经常使用)或 getopt(我以前使用过)或 optparse 这样的包。都在 CRAN 上。