Eu tenho uma resposta para isso no StackOverflow: link
a resposta é:
[ ]
é o test(1)
comando , que não manipula padrões da mesma maneira o bash faz. Em vez disso, use a expressão condicional do bash [[ ]]
do colchete duplo. Exemplo:
$ current_branch='oleg/feature/1535693040'
$ [ "$current_branch" = '*/feature/*' ] && echo yes
$ [[ $current_branch = */feature/* ]] && echo yes
yes
Editar com regexes:
$ [[ $current_branch =~ /feature/ ]] && echo yes
yes
O regex pode corresponder a qualquer lugar, portanto, você não precisa do% e do*
inicial e final (que seria .*
em um regex).
CUIDADO: as barras aqui não são delimitadores para o regex, mas os literais a serem correspondidos em algum lugar da string. Por exemplo, [[ foo/bar =~ / ]]
retorna verdadeiro. Isso é diferente da notação regex em vários idiomas.