我看到当给出文件名作为参数时,如何让Rscript执行我想要的操作,例如如果我的Rscript被称为script
并且包含:
#!/usr/bin/Rscript
path <- commandArgs()[1]
writeLines(readLines(path))
然后我可以从bash命令行运行:
Rscript script filename.Rmd --args dev='svg'
并成功获取filename.Rmd
的内容回复给我。如果不是传递上面的参数像filename.Rmd
这样的文件名,我想从stdin
传递文本,我尝试修改我的脚本以从stdin读取:
#!/usr/bin/Rscript
writeLines(file("stdin"))
但我不知道如何为这种情况构建命令行调用。我尝试了内容:
cat filename.Rmd | Rscript script --args dev='svg'
并尝试重定向:
Rscript script --args dev='svg' < filename.Rmd
无论哪种方式我都会收到错误:
Error in writeLines(file("stdin")) : invalid 'text' argument
(我还试过open(file("stdin"))
)。我不确定我是否错误地构造了Rscript,或者错误地构造了命令行参数,或者两者都没有。
答案 0 :(得分:9)
您需要从file("stdin")
创建的连接中读取文本,以便将有用的内容传递给text
的{{1}}参数。这应该工作
writeLines()