Correspondência de padrões no bloco se

0

Estou tentando corresponder um padrão armazenado em uma variável por meio de um bloco if. De acordo com o meu entendimento, isso deve ser uma correspondência e obter a declaração de eco "Match". No entanto, isso não parece ser uma correspondência.

patern=EOD*psv
file=EOD_test_20160404.psv

if [[ $file == *"$patern" ]]
then
    echo "Match";
else
    echo "No Match";
fi

Saída:

No Match

Por que o valor da variável file não corresponde ao padrão especificado?

    
por Sas 10.05.2016 / 21:24

1 resposta

2

When the ‘==’ and ‘!=’ operators are used, the string to the right of the operator is considered a pattern and matched according to the rules described below in Pattern Matching

Então, quando você inclui aspas duplas no padrão, o bash espera vê-las no nome do arquivo. Elimine as aspas duplas e / ou os principais * para o sucesso.

if [[ $file == $patern ]]
then
    echo "Match";
else
    echo "No Match";
fi
    
por 10.05.2016 / 21:33