aaa*_*aaa 1 bash shell-script error-handling r syntax
我目前正在尝试通过 shell 脚本运行 R 脚本。
这里是 R 脚本:
test = rnorm(1:100, 1000)
write.csv(test, 'test.csv')
Run Code Online (Sandbox Code Playgroud)
这里是调用 R 的 bash 脚本:
#!/bin/bash -l
#SBATCH --partition=compute
#SBATCH --job-name=test
#SBATCH --mail-type=ALL
#SBATCH --mail-user=myemail@blabla.com
#SBATCH --time=00:10:00
#SBATCH --nodes=1
#SBATCH --tasks-per-node=12
#SBATCH --account=myaccount
module purge
module load R
${HOME}/test.R
Run Code Online (Sandbox Code Playgroud)
我想我做的一切都正确,但输出返回以下错误:
/mydirectory/test.R: line 3: syntax error near unexpected token `('
/mydirectory/test.R: line 3: `test = rnorm(1:100, 1000)'
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?
问题是 shell 试图${HOME}/test.R
用一个bash
解释器运行你的解释器,它没有试图理解第 3 行的语法。R
显式使用你想要test.R
运行的解释器。
设置解释你Rscript
在test.R
为
#!/usr/bin/env Rscript
module purge
module load R
test = rnorm(1:100, 1000)
write.csv(test, 'test.csv')
Run Code Online (Sandbox Code Playgroud)
通过这种方式设置解释器,您现在可以从 shell 脚本运行它
Rscript ${HOME}/test.R
Run Code Online (Sandbox Code Playgroud)
请记住,登录到R
shell 并在其上运行命令,并在 shell 脚本中进行尝试是不一样的,R
shell与shell 不同bash
。您需要使用不R
直接从命令行登录的方式来运行命令,并在 shell 脚本中使用相同的方法。
归档时间: |
|
查看次数: |
7495 次 |
最近记录: |