bash脚本为for循环中的变量赋值
我试图在不同的目录中提交每个批处理作业,即.test1/,.test2/,.test3/。因此,我遍历./test*目录并设置变量$SLURM\u SUBMIT\u DIR,它控制我提交作业的目录bash脚本为for循环中的变量赋值,bash,shell,slurm,Bash,Shell,Slurm,我试图在不同的目录中提交每个批处理作业,即.test1/,.test2/,.test3/。因此,我遍历./test*目录并设置变量$SLURM\u SUBMIT\u DIR,它控制我提交作业的目录 #!/bin/bash -l # script.sh DIRS="./test*/" for dir in $DIRS do export $SLURM_SUBMIT_DIR =$dir echo $dir sbatch submitfile done 结果如下: script.
#!/bin/bash -l
# script.sh
DIRS="./test*/"
for dir in $DIRS
do
export $SLURM_SUBMIT_DIR =$dir
echo $dir
sbatch submitfile
done
结果如下:
script.sh:第9行:导出:`=./test1scan/':不是有效的标识符
/测试1扫描/
提交的批处理作业312892
script.sh:第9行:导出:`=./test2scan/':不是有效的标识符
/测试2扫描/
提交的批处理作业312893
script.sh:第9行:导出:`=./test3scan/':不是有效的标识符
/测试3扫描/
提交的批处理作业312894
编辑:
多亏了切普纳,错误消失了。但是,作业是在我运行此bash脚本的目录中提交的。有什么方法可以提交不同目录中的每个作业吗?导出的参数中,不能在等号后面加空格:
export "$SLURM_SUBMIT_DIR=$dir"
删除了空格,但仍然是相同的错误:
SLURM\u SUBMIT\u DIR
的值是多少?或者这是您要设置的变量的名称?在这种情况下,您需要删除$
,即,导出“SLURM\u SUBMIT\u DIR=$DIR”
。谢谢!现在它可以正常工作了。但是作业没有提交到不同的目录中……您正在寻找-D
选项来sbatch
?是的!最后发现-D也可以在命令行中使用!