所以我有一個名爲「run_correlation_study.pbs」和「correlation_study.pbs」的文件。在correlation_study.pbs中,我運行一個使用便攜式批處理軟件(pbs)的bash腳本並分配3個命令行參數,這些參數將用於我的實際程序中。在run_correlation_study.pbs中,循環遍歷在correlation_study.pbs中使用的命令行參數,以便我可以將我的程序拆分爲計算羣集的多個作業。然而,當我嘗試運行run_correlation_study.pbs文件時(我在運行它之前將它變成可執行文件),我一直在收到錯誤。我在下面發佈了兩個文件,run_correlation_study.pbs列在第一位,correlation_study.pbs列在第二位。我可以提供我的程序中使用命令行參數的部分,但我不認爲問題是由此引起的。另外,當我嘗試運行我的程序時顯示的錯誤/文本最後列出。Bash腳本和命令行參數
Run_correlation_study.pbs:
for ((ARC_LENGTH = 0; ARC_LENGTH <= 35; ARC_LENGTH++)); do
qsub -v ARC_LENGTH_ARG=$ARC_LENGTH/10, RANDOM_NUM_ARG=$ARC_LENGTH correlation_study.pbs
done
Correlation_study.pbs:
#PBS -l walltime=24:00:00
#PBS -l nodes=1:ppn=1
#PBS -N Correlation_study_data
#PBS -j oe
#PBS -m abe
#COMMANDS TO RUN
cd /home/kovacevich.9/correlation_study/corrstudies
./correlation_study.x ${ARC_LENGTH_ARG} ${RANDOM_NUM_ARG}
錯誤/文本:
usage: qsub [-a date_time] [-A account_string] [-b secs]
[-c [ none | { enabled | periodic | shutdown |
depth=<int> | dir=<path> | interval=<minutes>}... ]
[-C directive_prefix] [-d path] [-D path]
[-e path] [-h] [-I] [-j oe] [-k {oe}] [-l resource_list] [-m n
{abe}]
[-M user_list] [-N jobname] [-o path] [-p priority] [-P proxy_user]
[-q queue]
[-r y|n] [-S path] [-t number_to_submit] [-T type] [-u user_list]
[-w] path
[-W additional_attributes] [-v variable_list] [-V ] [-x] [-X] [-z]
[script]
方案的一部分:
if(argc == 3)
{
double test_arc_length = atof(argv[1]);
unsigned long int seed = atoi(argv[2]);
這與C++有什麼關係? – NathanOliver
'-v ARC_LENGTH_ARG = $ ARC_LENGTH/10,RANDOM_NUM_ARG = $ ARC_LENGTH'是傳遞給程序的三個獨立參數:'-v','ARC_LENGTH_ARG = $ ARC_LENGTH/10,'和'RANDOM_NUM_ARG = $ ARC_LENGTH'。我的猜測是,您應該使用'-v ARC_LENGTH_ARG = $ ARC_LENGTH/10,RANDOM_NUM_ARG = $ ARC_LENGTH'來代替(注意逗號後缺少空格) –
您是否知道'$ ARC_LENGTH/10'只是一個字符串,而不是將值除以10的結果?如果沒有,你也可能不知道shell不做浮點運算。 $((25/10))是2,而不是2.5。 – chepner