Мой скрипт использует доступ к 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), и если я сделал копирование-вставку в свою оболочку, я смогу запустить мой R-скрипт. Но из моего bash я не могу выполнить свой скрипт (но командная строка хороша).
Используя: Rscript $ RFILE $ ARGUMENTS, Rscript $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
Если я попробую это в моем сценарии оболочки, все будет отлично работать:
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"
У кого-то есть идея?
Спасибо