Im пишу скрипт, который будет запускаться через qsub в кластере sge.sge получить расположение скрипта внутри скрипта
У меня есть несколько исполняемых файлов, которые мне нужно вызвать в скрипте, и все они находятся в одном месте (то же, что и сам скрипт). Итак, мне интересно, как я могу найти место выполнения сценария Im. У меня есть автоматическая система сборки, и это просто не так, чтобы жестко закодировать это местоположение. Код должен быть чем-то вроде
#!/bin/bash
#$ -S /bin/bash
#$ -V
#$ -cwd
#$ -N "Job"
exec="/path/to/this/script/"execNameJob
$exec
Я судимый несколько вещей, и они не работали и люди, отмеченные как дубликат. Ни одно из предыдущих решений не работало. Im работает с моим скриптом, используя qsub -o console.out /tmp/qsubScript/qsubScript.sh. То, что я хочу, чтобы это/TMP/qsubScript/путь в сценарии
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
echo " Directory SOURCE: $DIR"
echo " BaseDir 0: " $0
echo " SGE_ROOT: $SGE_ROOT"
echo " SGE_JOB_SPOOL_DIR: $SGE_JOB_SPOOL_DIR"
выход:
ИСТОЧНИК Каталог:/OPT/gridengine/по умолчанию/шпули/вычислительном-2-8/job_scripts
BaseDir 0:/OPT/gridengine/по умолчанию/катушка/вычислительно 2-8/job_scripts/9534
SGE_ROOT:/опт/gridengine
SGE_JOB_SPOOL_DIR:/OPT/gridengine/по умолчанию/катушка/вычислительно 2-8/active_jobs/9534.1
Основная проблема заключается в том, что sge i mplementation копирует мой скрипт в job_script, поэтому я теряю ссылку на исходный скрипт.
Это? [Может ли сценарий Bash указать, в каком каталоге он хранится?] (Http://stackoverflow.com/q/59895/1983854) – fedorqui
Я пробую это раньше, и похоже, что SGE выполняет мой скрипт через другой скрипт. Предположим, что я нашел свой скрипт в/tmp/qsubDir/при запуске этого решения я получаю: Directory SOURCE:/opt/gridengine/default/spool/compute-3-15/jobs_scripts – leo
Я добавил это как пример, который не работал – leo