2016-09-19 54 views
0

我有一個腳本,我試圖提交到SGE集羣(在Redhat Linux上)。腳本的第一個部分定義了從完全CWD路徑當前文件夾,作爲一個變量來在下游使用:SGE集羣 - 腳本提交後失敗 - 在終端中工作

#!/usr/bin/bash 
# 
#$ -cwd 
#$ -A username 
#$ -M [email protected] 
#$ -j y 
#$ -m aes 
#$ -N test 
#$ -o test.log.txt 

echo 'This is a test.' 
result="${PWD##*/}" 
echo $result 

在bash,這按預期工作:

CWD:

-bash-4.1$ pwd 
/home/user/test 

運行腳本:

-bash-4.1$ bash test.sh 
This is a test. 
test 

當我將作業提交到集羣:

-bash-4.1$ qsub -V test.sh 

和檢查日誌文件:

This is a test. 
Missing }. 

有誰知道爲什麼提交作業是在說「缺少}」,當它在命令行的作品嗎?我不確定我在這裏錯過了什麼。

謝謝。

+1

我無法複製它。我建議嘗試的是運行命令'qrsh'通過SGE登錄到一個節點。然後從那裏運行你的腳本。它並不完全一樣,但我可以幫你找到問題。 –

回答

1

批處理調度程序的posix標準要求它們忽略#!而是使用配置到集羣中的shell或由qsub的-S選項選擇的shell。默認通常是csh。因此,在腳本中添加諸如#$ -S /usr/bin/bash之類的內容會導致它被bash解釋。

或者,您可以說服羣集管理員將隊列從posix_compliant更改爲unix_behavior。