Bash
通過 shell 腳本執行 R 腳本。意外標記 `(’ 附近的語法錯誤
我目前正在嘗試通過 shell 腳本執行 R 腳本。
這裡是 R 腳本:
test = rnorm(1:100, 1000) write.csv(test, 'test.csv')
這裡是呼叫 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
我想我做的一切都正確,但輸出返回以下錯誤:
/mydirectory/test.R: line 3: syntax error near unexpected token `(' /mydirectory/test.R: line 3: `test = rnorm(1:100, 1000)'
為什麼我會收到此錯誤?
問題是 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')
通過這種方式使用解釋器集,您現在可以從 shell 腳本執行它
Rscript ${HOME}/test.R
請記住,登錄
R
shell 並在其上執行命令,並在 shell 腳本中嘗試它是不一樣的,R
shell 與 shell 不同bash
。R
您需要使用這種方式來執行命令,而無需直接從命令行登錄,並在 shell 腳本中使用相同的方法。