在bash脚本中运行R脚本

时间:2013-12-27 15:24:42

标签: linux r bash

我在folder1的子文件夹中有2个R脚本,并运行以下脚本。 "没有这样的文件或目录" R脚本的错误被撤回。有谁知道如何解决这个问题?感谢

Bash脚本:

#! /usr/bin/env Rscript
for dir in folder1/* ; do
Rscript script1.R
Rscript script2.R
done

3 个答案:

答案 0 :(得分:3)

#!指定R,而不是bash。而你的循环是错误的。

也许试试这个:

#!/bin/bash Rscript
for dir in folder1/script*.R ; do
    echo "Now running $dir"
    Rscript folder1/$dir
done

答案 1 :(得分:2)

script1.R的子目录中是否有script2.Rfolder1?如果是这样,试试这个:

#! /bin/bash
for dir in folder1/* ; do
    Rscript "$dir"/script1.R
    Rscript "$dir"/script2.R
done

folder1中运行所有R脚本的另一种方法是使用find

find folder1 -type f -name "*.R" -exec Rscript {} \;

答案 2 :(得分:0)

您从未更改目录,因此您应该在执行脚本之前切换到新的子文件夹,或者使用完整路径执行它们。

因此,尝试替换

Rscript script1.R
Rscript script2.R

通过

cd folder1/$dir; Rscript script1.R; cd -
cd folder1/$dir; Rscript script2.R; cd -

Rscript folder1/$dir/script1.R
Rscript folder1/$dir/script2.R

另外,你的shebang错了,应该是

#!/bin/bash
如果您希望脚本是shell脚本,请使用

或类似的东西。现在它作为R脚本执行。