【发布时间】:2020-04-29 20:49:52
【问题描述】:
总结一下:
我使用的是 bash shell,版本:4.2.46(2)-release
我想向 slurm 作业调度程序提交一个批处理作业脚本,在该脚本中,我使用扩展 globbing,它使用 shopt -s extglob 在我尝试使用的扩展 globbing 命令的单独行上打开。
我想运行这些命令:
echo !(wmparc.nii.gz)
# for sid in $SubIdStr; do
# cd $sid
# rm -r rfMRI T2w
# cd T1w
# rm -r !(wmparc.nii.gz)
# cd ..
# cd MNINonLinear/
# rm -r !(wmparc.nii.gz|T1w_restore_brain.nii.gz|Results)
# cd ..
# cd ..
# done
我尝试在这些命令之前使用 shopt -s extglob 并在它们之间添加一个换行符,例如。 :
shopt -s extglob
echo !(wmparc.nii.gz)
这不起作用,并且在之后编写 shopt extglob 时,没有显示打开或关闭扩展 globbing 输出到我的日志文件。
我发现 shopt -s extglob 唯一可以工作的地方是一开始,例如:
#!/bin/bash
shopt -s extglob
然而,这是一个问题,因为我的 SBATCH 设置没有被解释,例如。 :
#SBATCH --mail-type=END
#SBATCH --mail-user=
#SBATCH --partition=imgcomputeq
#SBATCH --qos=img
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --mem=5g
#SBATCH --time=50:00:00
这是手册中对 sbatch 的描述:
sbatch 向 Slurm 提交一个批处理脚本。批处理脚本可以通过命令行上的文件名提供给 sbatch,或者如果没有指定文件名,sbatch 将从标准输入中读取脚本。批处理脚本可能包含在脚本中任何可执行命令之前以“#SBATCH”开头的选项。一旦到达脚本中的第一个非注释非空白行,sbatch 将停止处理进一步的 #SBATCH 指令。
我试图删除所有内容的目录,但扩展 glob 中包含的文件是我要删除的目录和文件的混合。
我很好奇是否有人之前遇到过这个问题/知道解决方法?或者可以提供替代解决方案?
【问题讨论】:
标签: linux bash hpc slurm sbatch