Bash脚本和命令行参数

时间:2017-07-12 14:25:51

标签: c++ bash pbs

所以我有一个名为“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。我可以提供我的程序中使用命令行参数的部分,但我不认为问题是由那里引起的。此外,我尝试运行程序时显示的错误/文本最后列出。

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]);

1 个答案:

答案 0 :(得分:0)

要从bash执行浮点运算,需要调用外部程序。你可以做其中一个:

qsub -v "ARC_LENGTH_ARG=$(bc -l <<<"$ARC_LENGTH/10"),..."
qsub -v "ARC_LENGTH_ARG=$(awk -v "a=$ARC_LENGTH" 'BEGIN {print a/10}'),..."

在双引号字符串中使用command substitution语法$(cmd ...)