[Rd] Rscript -e does not accept newlines under Linux?
Dirk Eddelbuettel
edd @ending from debi@n@org
Mon Sep 17 13:37:46 CEST 2018
On 17 September 2018 at 07:09, Duncan Murdoch wrote:
| I would not assume that shell behaviour in Windows and Unix would always
| be the same. A better comparison would be to list some other command on
| the same system that behaves differently. For example, on MacOS I see
|
| $ echo 'ls()
| > ls()'
| ls()
| ls()
|
|
| which suggests that what you wrote should be legal, but the form of that
| command is different: there's no equivalent of "-e". Maybe someone else
| who knows Unix shell behaviour better can comment on whether they'd
| expect your Rscript command to work.
When we wrote littler, ie 'r', just before Rscript was added to R itself, the
ability to work from standard input just like any other Unix tool does was in
fact a design feature. So with littler it works (and you need -p to print as
we are silent by default by another design choice)
edd using rob:~$ (echo "ls()"; echo "ls()")
ls()
ls()
edd using rob:~$ (echo "ls()"; echo "ls()") | r -p
[1] "argv"
[1] "argv"
edd using rob:~$
argv is a global variable to hold the arguments (as in C).
Hence standard things work the way you expect them to:
edd using rob:~$ echo "set.seed(123); print(summary(rnorm(1e6)))" | r
Min. 1st Qu. Median Mean 3rd Qu. Max.
-4.79919 -0.67439 -0.00026 -0.00052 0.67333 4.85077
edd using rob:~$
just like r -e ... would, or R -e do now. It is harder to do this for R and
Rscript due to the way they are invoked, setting shell variables and all that
before calling into $R_HOME/exec/bin/R.
Dirk
--
http://dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org
More information about the R-devel
mailing list