I'm building a SLURM pipeline where each stage is a bash wrapper script that generates and submits SLURM jobs. Currently I'm doing complex job ID extraction which feels clunky:
# Current approach
job1_id=$(bash stage1_wrapper.sh params | grep "^JobID:" | cut -d ":" -f 2)
job2_id=$(bash stage2_wrapper.sh params $job1_id | grep "^JobID:" | cut -d ":" -f 2)
job3_id=$(bash stage3_wrapper.sh params $job2_id | grep "^JobID:" | cut -d ":" -f 2)
Each wrapper script does something like:
# Inside wrapper script
cat > generated_job.slurm << EOF
#!/bin/bash
#SBATCH --job-name=my-job
#SBATCH --time=10:00
python my_analysis.py $params
EOF
job_id=$(sbatch --parsable generated_job.slurm)
echo "JobID:$job_id"  # Plus other output
Is there a cleaner way to extract job dependence id, rather than repeating a manual grep-cut operation 3 times?
grepandcut3 times which causes unnecessary forks given that Bash provides builtin options to do that in a much better way.. stage1_wrapper.sh params; job1_id=$jod_id.sbatch--parsable. Please have a look at my last code block.--dependency?