指定SLURM的开始时间时出现Bash语法错误

时间:2014-06-01 21:57:58

标签: bash

我是bash脚本的新手,我正在尝试执行以下脚本:

#!/bin/bash

declare -i j=0
for i in {4..10..2}
do
        rm -f experiment.sh
        mkdir -p /$WRKDIR/output$i
        echo "time $HADOOP_HOME/bin/hadoop distcp file://$WRKDIR/random.file file://$WRKDIR/output$i" > experiment.sh
        sbatch --begin=now+(4*j)hour -N $i hadoopslurm.sh test$i
        ((j++))
done

这样做时,我收到以下错误:

Invalid time specification (pos=3): now+(4*j)hour
sbatch: error: Invalid time specification now+(4*j)hour
Invalid time specification (pos=3): now+(4*j)hour
sbatch: error: Invalid time specification now+(4*j)hour
Invalid time specification (pos=3): now+(4*j)hour
sbatch: error: Invalid time specification now+(4*j)hour
Invalid time specification (pos=3): now+(4*j)hour
sbatch: error: Invalid time specification now+(4*j)hour

我无法弄清楚正确的语法。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:1)

您的变量j未正确解析,因此被视为文字字符。 您应该在$之前添加$j前缀,以表明它是变量。 您的增量声明((j++))可能也不会起作用。请尝试改为:

sbatch --begin=now+(4*$j)hour -N $i hadoopslurm.sh test$i
j=$((j+1))