É mais fácil com zsh :
$ array=(saf sri trip tata strokes)
$ pattern='*tr*'
$ printf '%s\n' ${(M)array:#$~pattern}
trip
strokes
-
${array:#pattern}: expande para os elementos da matriz que não correspondem ao padrão. -
(M)(para correspondência): reverte o significado do operador:#para expandir para os elementos que correspondem em seu lugar -
$~pattern, faz com que o conteúdo de$patternseja tomado como um padrão.