我正在編寫腳本以通過sge集羣中的qsub運行。sge在腳本中獲取腳本位置
我有幾個可執行文件,我需要在腳本中調用和所有的人都在同一個位置(與腳本本身)。所以我想知道如何獲得腳本Im執行的位置。 我有一個自動構建系統,它只是不正確的代碼這個位置。代碼應該是類似的東西
#!/bin/bash
#$ -S /bin/bash
#$ -V
#$ -cwd
#$ -N "Job"
exec="/path/to/this/script/"execNameJob
$exec
我嘗試了一些事情,他們沒有工作,人們標記爲重複。以前的解決方案都沒有工作。我使用 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:/選擇/ gridengine /默認/閥芯/計算-2-8/job_scripts/9534
SGE_ROOT中:/ opt/gridengine
SGE_JOB_SPOOL_DIR中:/ opt/gridengine /默認/閥芯/計算-2-8/active_jobs/9534.1
的主要問題是,SGE我mplementation將我的腳本複製到job_script中,所以我放棄了對原始腳本的引用。
這是什麼? [Bash腳本可以告訴它存儲在哪個目錄?](http://stackoverflow.com/q/59895/1983854) – fedorqui
我之前試過,看起來SGE正在通過另一個腳本執行我的腳本。假設我在/ tmp/qsubDir /運行此解決方案時找到了我的腳本:目錄SOURCE:/ opt/gridengine/default/spool/compute-3-15/job_scripts – leo
我添加了這個作爲示例, – leo