尝试使用system()从R脚本调用shell脚本,但找不到shell脚本

mw3dktmi  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(192)

我尝试使用R的system()函数从R脚本调用shell脚本。
我正在执行以下操作:
在我的R脚本中,我调用system()函数:system(exe, intern = TRUE,wait = TRUE),exe包含shell脚本调用脚本所需的参数,以从R脚本目录到shell脚本目录的文件路径开头。
这将返回sh: 1: 'file-path-to-shell-script': not found
当我复制粘贴exe中包含的内容,并直接在命令行中运行它时,从R脚本的文件位置开始,它工作得很完美。
有人能帮我吗?

thtygnil

thtygnil1#

我假设您使用的是shell脚本的 * 相对 * 路径。在脚本中执行getwd()以确保您的工作目录与脚本所在的目录相对应。如果您的当前工作目录与脚本的位置不对应,您有几个选择:
1.使用setwd()将工作目录设置为正确的位置,以便shell脚本的相对路径正确。
1.使用getwd()提供的信息来更正相对路径
1.使用shell脚本的绝对路径作为system()的参数
示例:

  • 您的脚本位于/home/bis/scripts中,getwd()返回/home/bis/R/workspace
  • 要执行的shell脚本位于/home/bis
  • 如果尝试在脚本中运行system('../scripts/my-script.sh'),则会失败。
  • 如果您尝试在脚本中运行system('../../scripts/my-script.sh'),则会成功。

希望这对你有帮助!

相关问题