我在folder1的子文件夹中有2个R脚本,并运行以下脚本。 "没有这样的文件或目录" R脚本的错误被撤回。有谁知道如何解决这个问题?感谢
Bash脚本:
#! /usr/bin/env Rscript
for dir in folder1/* ; do
Rscript script1.R
Rscript script2.R
done
答案 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.R
和folder1
?如果是这样,试试这个:
#! /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
脚本执行。