Seus operadores de comparação não estão se concentrando da maneira como você acha que eles estão se globbing.
Quando você verifica =="*.c"
ou =="*.cpp"
, está verificando se corresponde a essa cadeia real.
O que você quer é a comparação de expressões regulares.
if [[ $1 =~ $regex ]]; then
Para a expressão regular real, o caractere ^
indica "começa com" e $
indica "termina com", portanto
if [[ $1 =~ ^[a-zA-Z0-9]*\.cpp$ ]]; then
pode ser um bom começo para verificar arquivos cpp e
if [[ $1 =~ ^[a-zA-Z0-9]*\.c$ ]]; then
para arquivos c.
A única habilidade que eu recomendo strongmente para quem é um administrador de sistema (especialmente em um sistema * nix) ou qualquer tipo de script / programação / desenvolvimento é aprender a usar expressões regulares. Existem alguns tutoriais e folhas de fraude lá fora, aqui está o primeiro da minha coleção de marcadores - link