私のスクリプトは、mysql へのアクセスを使用してコマンド引数を取得し、Rscript を起動します。その使用法は次のとおりです: Rscript $RFILE $ARGUMENTS (Rscript へのパスに対応する RFILE、および使用されるパス ファイルと agr に対応する ARGUMENTS)。
別の方法で試してみましたが、まだエラーがあります。ここに私の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 $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
シェルスクリプトでこれを試すと、すべて正常に動作します:
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"
誰かがアイデアを持っていますか?
ありがとう