Оператор сопоставления регулярных выражений =~
не поддерживается в одинарных квадратных скобках. Вам нужны двойные квадратные скобки, чтобы это работало.
[[ $name =~ ^.[0-9]$ ]]
Обратите внимание, что вам не нужно регулярное выражение, вы можете использовать обычный шаблон:
[[ $name = *[0-9] ]]
или, если вам нужно, чтобы имя содержало что-то перед цифрой,
[[ $name = *?[0-9] ]]
Если вы понимаете код в примерах, которые вы цитируете, вы сможете довольно легко модифицировать его:
(-C*) cnt="${1#-C}" ; shift ;;