我想将参数传递给sbatch命令行。
#!/bin/bash
#SBATCH -o job-%A_task.out
#SBATCH --job-name=paral_cor
#SBATCH --partition=normal
#SBATCH --time=1-00:00:00
#SBATCH --mem=200G
#SBATCH --cpus-per-task=16
#SBATCH --array=1-10
#Set up whatever package we need to run with
module load gcc/8.1.0 openblas/0.3.3 R
# SET UP DIRECTORIES
OUTPUT="$HOME"/PROJET_M2/data/$(date +"%Y%m%d")_parallel_nodes_test
mkdir -p "$OUTPUT"
export FILENAME="$HOME"/vipailler/PROJET_M2/bin/RHO_COR.R
subset=$((SLURM_ARRAY_TASK_ID))
file="$HOME"/PROJET_M2/raw/truelength2.prok2.uniref2.rares.tsv
#Run the program
echo "Start job :"`date` >> "$OUTPUT"/"$SLURM_ARRAY_TASK_ID".txt
echo "Start job :"`date`
echo PWD $PWD
Rscript $FILENAME --file $file --subset $subset > "$OUTPUT"/"$SLURM_ARRAY_TASK_ID"
wait
echo "Stop job : "`date` >> "$OUTPUT"/"$SLURM_ARRAY_TASK_ID".txt
echo "Stop job : "`date`
我用以下代码执行此代码:
sbatch --partition normal --array 1-10 RHO_COR.sh
我想得到的是在上面的命令行中使用file
参数,看起来像sbatch --partition normal --array 1-10 --file name_of_my_file RHO_COR.sh
我不想在Slurm代码中指定我的文件名,而是在sbatch
命令行中指定,以便永远不会更改此Slurm代码。
谢谢
您可以在脚本之后传递一个参数,就好像您直接在shell上运行它一样:
sbatch --partition normal --array 1-10 RHO_COR.sh name_of_my_file
然后参数将在shell脚本中作为$1
提供