我是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
我无法弄清楚正确的语法。我将不胜感激任何帮助。
答案 0 :(得分:1)
您的变量j
未正确解析,因此被视为文字字符。
您应该在$
之前添加$j
前缀,以表明它是变量。
您的增量声明((j++))
可能也不会起作用。请尝试改为:
sbatch --begin=now+(4*$j)hour -N $i hadoopslurm.sh test$i
j=$((j+1))