Irgendwas gefällt ihm noch nicht so...
In Zeile 48 wird ja zunächst immer die vollständige Pfadangabe verglichen (warum?), welche ein laut RegEx unzulässiges '/' enthält, deswegen sieht man hier genau zwei Fehlermeldungen aus diesem Block. Der zweite Block funktioniert ebenfalls nicht, weil in der ursprünglichen Liste der gültigen Zeichen kein '.' vorkam; somit wäre der RegEx zu erweitern auf ^[\]\[\)\(0-9A-Za-z_\.\-]+.
Ich würde raten, die Scripts generell mit ShellCheck gegenzuprüfen, welches sich über Zeile 44 beschweren würde (wegen fehlenden Anführungszeichen). Wenn ein Verzeichnis oder eine Datei ein Leerzeichen enthält, bekommt basename hier automatisch zwei Argumente und das Ergebnis ist sicherlich nicht das gewünschte.