我的脚本使用对 mysql 的访问来获取启动 Rscript 的命令参数。其用法如下: Rscript $RFILE $ARGUMENTS(RFILE对应Rscript的路径,ARGUMENTS对应使用的路径文件和agr)。
我尝试了不同的方式,但我仍然有错误,这里是我的 bash 脚本的副本:
#!/usr/bin/env bash
# Execute R process
# -----------------
### Mysql Setup ###
USER=...
PASS=...
HOST=...
DB=...
# Get Job ID process
# Use to retrieve args in my DB
ID=$1
# Get script name
RFILE=$(mysql -u$USER -p$PASS -e "SELECT script_name FROM JobProcess WHERE script_run_id=$ID;" $DB)
SUBSTRING="script_name"
RFILE="${RFILE//$SUBSTRING}"
# Get script_args
ARGUMENTS=$(mysql -u$USER -p$PASS -e "SELECT script_args FROM JobProcess WHERE script_run_id=$ID;" $DB)
SUBSTRING2="script_args"
ARGUMENTS="${ARGUMENTS//$SUBSTRING2}"
RUN="Rscript $RFILE $ARGUMENTS"
# Try Different execute process
Rscript $RFILE $ARGUMENTS
#eval "$RUN"
#`Rscript $RFILE $ARGUMENTS`
#$RUN
我验证了我的命令行(通过 echo),如果我复制粘贴到我的 shell,我可以运行我的 R 脚本。但是从我的 bash 中,我无法执行我的脚本(但命令行很好)。
通过使用:Rscript $RFILE $ARGUMENTSRscript $RFILE $ARGUMENTS
和 $RUN,我有这个错误:
Error in parse(text = args[[i]]) :
unexpected end of input in ""path_in='/Users/GR/web-app/Rproject/Inputs/Rscript/Gene-level"
Calls: eval -> parse
Execution halted
通过使用:eval“$RUN”,我有这个错误:
/Users/GR/web-app/Rproject/Scripts/Rscript.sh: line 38: /Users/GR/web-app/Rproject/Scripts/arg_file_test.R: Permission denied
/Users/GR/web-app/Rproject/Scripts/Rscript.sh: line 44: path_in<-"/Users/GR/web-app/Rproject/Inputs/Rscript/Gene-level Description for Modules.csv": No such file or directory
如果我在我的 shell 脚本中尝试这个,一切正常:
SCRIPT="/Users/GR/web-app/Rproject/Scripts/arg_file_test.R"
FILE1="path_in='/Users/GR/web-app/Rproject/Inputs/Rscript/Gene-level Description for Modules.csv'"
FILE2="path_in2='/Users/GR/web-app/Rproject/Inputs/Rscript/Template_Auto.csv'"
FILES="\"$FILE1\" \"$FILE2\""
ARG="l=32 w=33"
RUN="Rscript $SCRIPT $FILES $ARG"
有人有想法吗?
谢谢