case
не использует регулярные выражения, он использует шаблоны
Для «1 или более цифр» сделайте следующее:
shopt -s extglob
...
case ${!i} in
+([[:digit:]]) )
n=${!i}
;;
...
Если вы хотите использовать регулярные выражения, используйте оператор =~
внутри[[...]]
if [[ ${!i} =~ ^[[:digit:]]+$ ]]; then
n=${!i}
else
echo "Invalid"
fi
Были ли у вас до этого права на выполнение в каталоге /data/? Я думаю, что проблема в каталоге /data, а не в студентах
getfacl/данные