我正在尝试从bash脚本运行批处理脚本(保存在文件中的R命令集)。出于某种原因,当我在命令行上手动键入时,运行R脚本的bash脚本中的语句会起作用,但是当在批处理脚本中执行该语句时,它将失败并显示错误:
munge_data.sh:第17行: - file = stats.R:找不到命令
以下是bash脚本的片段:
#!/bin/bash
SCRIPTDIR=/path/to/some/directory
RBIN=`which R`
cd $SCRIPTDIR
$RBIN --file=stats.R > my.stats.output.txt # <- this is line 17 in my script
有人能发现造成这个问题的原因吗?
答案 0 :(得分:4)
显然,which R
没有返回任何内容,可能是因为R不在您的PATH中,因此$RBIN
为空,并且shell尝试运行不存在的命令--file=stats.R
。
(如果R应该在PATH中,你可以在不使用变量的情况下调用它R
。)
答案 1 :(得分:1)
你没有在Bash中使用正确的R调用函数。
在命令行中按照以下命令格式运行R(R CMD BATCH文件output.file)
#!/bin/bash
R CMD BATCH your_file.R my.stats.output.txt
将获得您想要的99%(确保您拥有此bash文件的执行权限)
你没有把它弄好的原因是因为当执行which R
时,控件从bash文件传输到R程序,然后bash脚本暂停执行。
答案 2 :(得分:1)
没人提到Rscript(附R)或littler早于它:
#!/usr/bin/Rscript
z <- rnorm(5)
# ... other R commands ...
或
#!/usr/bin/r
z <- rnorm(5)
# ... other R commands ...
您可以在执行常规chmod 755 filename
后直接运行这两项内容。