У меня есть две папки: Controls
и Patients
в каждой из них есть несколько папок, одна из которых называется Runfirstall
. У меня есть следующий код:
DIR="/media/Roy/Analysis"
for group in Controls Patients;
do
echo $group
for folder in $DIR/$group/!(Runfirstall)/
do
name=$(basename "$folder")
echo $name
done;
done;
Что дает мне эту ошибку:
./test.sh: line 7: syntax error near unexpected token `('
./test.sh: line 7: ` for folder in $DIR/$group/!(Runfirstall)'
Дело в том, что если я выполняю extglob непосредственно перед тем, как скрипт выдаст мне:
shopt extglob
extglob on
Опции оболочки скрипта не наследуются от интерактивной оболочки, в которой он выполняется - вам нужен явный
shopt -s extglob
внутри скрипта.
Вы также должны добавить #!/bin/bash
shebang в начало сценария, чтобы было ясно, какая оболочка должна использоваться.