使用 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 上。
我正在使用 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 上。