Подводя итог:
Я использую оболочку bash, версия: 4.2.46 (2) -релиз
Я хочу отправить сценарий пакетного задания в планировщик заданий, где: в сценарии я использую расширенное глобирование, которое включается с помощью shopt -s extglob в отдельной строке для расширенной команды глобирования, которую я пытаюсь использовать.
Я хочу выполнить эти команды:
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 -s extglob to work работает с самого начала, например:
#!/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, как только в сценарии будет достигнута первая строка без пробелов в комментариях.
Каталоги, в которых я пытаюсь удалить все, кроме файлов, содержащихся в расширенном глобусе. представляют собой набор каталогов и файлов, которые я хочу удалить.
Мне любопытно, сталкивался ли кто-нибудь с этой проблемой раньше / знает об обходном пути? Или можете предложить альтернативное решение?